部署 Lambda 后,我收到 ImportModuleError。该函数在本地运行良好(我尝试使用 serverless-offline 并且运行良好),但是当尝试调用已部署的函数时,它给出以下错误。 Reflect-metadata 已正确添加到 package.json 的依赖项中
2024-03-26T02:52:13.927Z 未定义错误未捕获的异常{ "errorType": "运行时.ImportModuleError", “errorMessage”:“错误:找不到模块“reflect-metadata” 需要堆栈: - /var/task/dist/functions/OrderHandler.js - /var/runtime/index.mjs", “堆”: [ “Runtime.ImportModuleError:错误:找不到模块'reflect-metadata'”, “需要堆栈:”, “- /var/task/dist/functions/OrderHandler.js”, “-/var/runtime/index.mjs”, 在 _loadUserApp (文件:///var/runtime/index.mjs:1087:17)", 在异步 UserFunction.js.module.exports.load (file:///var/runtime/index.mjs:1119:21)", 在异步启动时(file:///var/runtime/index.mjs:1282:23)”, 在异步文件:///var/runtime/index.mjs:1288:1” ] }
import 'reflect-metadata';
import { APIGatewayProxyEvent, APIGatewayProxyResult } from 'aws-lambda';
import { OrdersController } from './OrdersController';
export const handler = async (
event: APIGatewayProxyEvent,
): Promise<APIGatewayProxyResult> => {
try {
const path = event.path;
const method = event.httpMethod;
container.registerSingleton<OrderRepository>(
'OrderRepository',
OrderRepository,
);
const OrdersController = new OrdersController();
console.log(path);
// Route handling
switch (true) {
case path === '/orders' && method === 'GET':
return OrdersController.handler(event);
default:
return {
statusCode: 404,
body: JSON.stringify({ message: 'Route not found' }),
};
}
} catch (error) {
console.error('Error:', error);
return {
statusCode: 500,
body: JSON.stringify({ message: 'Internal server error' }),
};
}
};
任何人都可以就可能出现的问题提出建议吗?
我尝试调用 lambda 函数,但失败并出现上述错误。
您可以创建一个包含应用程序所需依赖项的 Lambda 层,并将其绑定到您的 Lambda 函数。此方法有助于保持部署包较小,并确保您的 Lambda 函数具有高效运行所需的所有依赖项。
您可以参考此文档来创建一个: https://docs.aws.amazon.com/lambda/latest/dg/creating-deleting-layers.html