AWS Lambda Node.js Runtime.ImportModuleError问题原因排查求助
AWS Lambda Runtime.ImportModuleError错误原因分析
问题场景
- Lambda函数:
sensor-processor-v3-dev-wifiConnector - 处理器配置:
src/wifi.connector - 部署包:
serverless-v3.zip,包含webpack编译后的JavaScript代码,文件夹结构与本地src/*.js一致 - 执行命令:
aws lambda invoke --function-name sensor-processor-v3-dev-wifiConnector output.json - 返回错误:
{ "errorType": "Runtime.ImportModuleError", "errorMessage": "Error: Cannot find module 'wifiConnector'\nRequire stack:\n- /var/runtime/index.mjs", "trace": [ "Runtime.ImportModuleError: Error: Cannot find module 'wifiConnector'", "Require stack:", "- /var/runtime/index.mjs", " at _loadUserApp (file:///var/runtime/index.mjs:1061:17)", " at async UserFunction.js.module.exports.load (file:///var/runtime/index.mjs:1093:21)", " at async start (file:///var/runtime/index.mjs:1256:23)", " at async file:///var/runtime/index.mjs:1262:1" ] }
错误原因
- 处理器配置与实际文件不匹配:Lambda处理器的格式为
[文件路径/文件名].[导出函数名](无需扩展名)。你配置的src/wifi.connector表示Lambda会查找src/wifi.js并加载其中的connector函数,但实际部署包内的文件是src/wifiConnector.js(与本地结构一致),导致找不到对应模块。 - webpack编译导致路径/导出变更:如果webpack将代码打包为单个文件(如
bundle.js),但你仍使用原src路径的处理器配置,Lambda无法定位到正确的模块。需将处理器改为指向webpack输出的打包文件及其导出的处理函数,例如bundle.handler(假设打包文件为bundle.js,导出函数为handler)。 - 文件名大小写或扩展名问题:Lambda运行环境区分大小写,需确认部署包内的文件名与配置完全匹配;同时检查打包后的文件扩展名是否为
.js,否则Lambda无法识别为可加载模块。
内容的提问来源于stack exchange,提问作者nicklee
相关产品推荐
相关产品推荐

