TypeScript+Webpack构建的AWS Lambda集成New Relic遇构建错误求助
解决方案
1. 安装缺失的依赖
报错核心是Webpack找不到newrelic-lambda-wrapper模块,先确认已安装该npm包:
npm install newrelic-lambda-wrapper --save
yarn用户执行:
yarn add newrelic-lambda-wrapper
2. 修正Webpack模块解析配置
检查webpack.config.js,确保配置了正确的模块解析规则,让Webpack从node_modules中查找第三方依赖:
module.exports = { // ...其他配置 resolve: { modules: ['node_modules', path.resolve(__dirname, 'src')], extensions: ['.ts', '.js'] // 确保包含TS和JS后缀 } };
这一步避免Webpack把newrelic-lambda-wrapper误解析为本地相对路径文件。
3. 确认SAM模板环境变量配置正确
在SAM模板中,通过环境变量指定原Lambda处理器的路径,确保路径和Webpack打包后的实际输出路径一致:
Resources: MyAppTokenValidator: Type: AWS::Serverless::Function Properties: Handler: newrelic-lambda-wrapper.handler Environment: Variables: NEW_RELIC_LAMBDA_HANDLER: 'dist/api/MyAppTokenValidator.handler' # 替换为你实际的打包后处理器路径 # 其他New Relic相关环境变量(如NEW_RELIC_ACCOUNT_ID等)
注意:路径要对应Webpack输出目录下的处理器文件,比如原处理器是src/api/MyAppTokenValidator.ts,打包后输出到dist目录,就用dist/api/MyAppTokenValidator.handler。
4. 检查Webpack的externals配置
如果你的Webpack配置中用了externals排除依赖,确认没有误把newrelic-lambda-wrapper加入排除列表,否则它不会被打包进最终的Lambda代码包中,需要移除该包的externals配置。
内容的提问来源于stack exchange,提问作者Rajith Delantha
相关产品推荐
相关产品推荐

