我正在将一些 JS 代码转换为 typescript ,当使用无服务器框架部署到 AWS 上的 lambda 并运行它时,我收到以下错误。起初我以为我的一个进口产品很糟糕,但看起来一切都符合预期。
{ "errorType": "Runtime.ImportModuleError", "errorMessage": "Error: Cannot find module 'tslib'\nRequire stack:\n- /var/task/handlers/Create.js\n- >/var/runtime/UserFunction.js\n- /var/runtime/index.js", "trace": [ "Runtime.ImportModuleError: Error: Cannot find module 'tslib'", "Require stack:", "- /var/task/handlers/Create.js", "- /var/runtime/UserFunction.js", "- /var/runtime/index.js", " at _loadUserApp (/var/runtime/UserFunction.js:100:13)", " at Object.module.exports.load (/var/runtime/UserFunction.js:140:17)", " at Object. (/var/runtime/index.js:43:30)", " at Module._compile (internal/modules/cjs/loader.js:956:30)", " at Object.Module._extensions..js (internal/modules/cjs/loader.js:973:10)", " at Module.load (internal/modules/cjs/loader.js:812:32)", " at Function.Module._load (internal/modules/cjs/loader.js:724:14)", " at Function.Module.runMain (internal/modules/cjs/loader.js:1025:10)", " at internal/main/run_main_module.js:17:11" ] }
无服务器:
functions:
createFamily:
name: ${self:custom.createFamilyName}
handler: handlers/Create.createFamily
description: Lambda for Creating a family in the family service
timeout: 30
events:
- http:
path: /family
method: post
private: true
处理程序:
import { APIGatewayEvent, Context, ProxyResult } from 'aws-lambda';
import { utilities } from '../handlers/utilities';
import { familyService } from '../services/FamilyService';
import { IFamily } from '../interfaces/IFamily';
let familyData: IFamily;
let serverReturn: IFamily;
export const createFamily = async (
event: APIGatewayEvent,
context: Context
): Promise<ProxyResult> => {
try {
if (!event.body) {
return utilities.BuildResponse(400, JSON.stringify('Object to create was not provided'));
}
familyData = JSON.parse(event.body);
serverReturn = await familyService.createFamily(familyData);
if (!serverReturn) {
return utilities.BuildResponse(404, JSON.stringify('Failed to create Family'));
}
return utilities.BuildResponse(201, JSON.stringify(serverReturn));
} catch(err) {
console.error('Family Service Create a family error: ', err);
return utilities.BuildResponse(500, JSON.stringify('Family Service internal server error'));
}
}
最佳答案
您需要将 typescript 编译为 JavaScript 并在模板中引用转换后的输出。
关于node.js - 将编译的 typescript 部署到 lambda 时导入模块错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59829533/