AWS Lambda TypeScript HelloWorld模板执行sam local invoke报错:找不到模块'app'
解决AWS SAM TypeScript Hello World模板本地调用报错"Cannot find module 'app'"的问题
问题原因
TypeScript模板生成的代码需要先编译为JavaScript才能被Lambda运行环境识别,而默认生成的template.yaml配置指向的是TypeScript源码目录,且sam local invoke不会自动执行编译流程,导致运行时找不到对应的JS模块。JavaScript版本无需编译,因此可以直接运行。
解决步骤
安装依赖并编译TypeScript代码
进入hello-world目录,安装项目依赖并执行编译:cd hello-world npm install npm run build执行完成后,会在
hello-world/dist目录下生成编译后的JavaScript文件。修改SAM模板配置
返回sam-app根目录,编辑template.yaml文件:- 将
HelloWorldFunction下的CodeUri从hello-world/修改为hello-world/dist/ - 确认
Handler配置为app.lambdaHandler(编译后的JS文件名为app.js,对应导出的lambdaHandler函数)
- 将
重新执行本地调用
回到根目录运行命令:sam local invoke --event events/event.json
额外提示
如果后续需要频繁调试,可以在hello-world目录下执行npm run watch,实现代码修改后的自动编译,避免每次手动执行编译命令。
内容的提问来源于stack exchange,提问作者Kid_Learning_C
相关产品推荐
相关产品推荐

