You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

AWS Lambda运行报「out/get-user-messages.handler未定义或未导出」问题问询

报错排查解决步骤

out/get-user-messages.handler is undefined or not exported 报错的核心是Lambda运行时加载指定模块后,找不到handler属性导出,按以下顺序排查:

1. 确认Lambda控制台handler配置正确

检查Lambda函数配置页的「运行时设置」中,处理程序填写的是out/get-user-messages.handler,不要多写.js后缀,也不要漏写out/前缀。

2. 本地验证编译产物的导出是否正常

在项目根目录新建测试文件test-export.js,写入以下代码:

const mod = require('./out/get-user-messages.js');
console.log('导出内容:', mod);
console.log('handler是否存在:', !!mod.handler);

运行node test-export.js,如果打印的handler为undefined,说明编译环节存在问题,继续往下排查。

3. 修复webpack配置错误

当前webpack配置存在两处直接导致导出失败的问题:

  • 删掉output配置中的library: "[name]"字段:该配置会把模块导出挂载到和文件名同名的属性下,导致你需要通过require(...).['get-user-messages'].handler才能拿到handler,和Lambda要求的require(...).handler不符。
  • 把libraryTarget: 'commonjs'改为libraryTarget: 'commonjs2':CommonJS2是Node.js生态通用的模块导出规范,适配Lambda运行时的加载逻辑。

修改后output配置参考:

output: {
  path: path.join(__dirname, "./out"),
  filename: "[name].js",
  libraryTarget: 'commonjs2'
}

另外注意你当前webpack配置中重复声明了两次module字段,JS对象重复声明会导致前面的配置被覆盖,建议删掉冗余的第一个module配置,避免其他未知问题。

4. 可选:调整babel模块编译配置

如果你调整webpack后导出还是异常,把.babelrc中@babel/preset-env的modules: false改为modules: 'commonjs',强制babel把ES模块转为CommonJS模块,保证export const handler可以正确转为exports.handler。

5. 确认部署包结构正确

解压你上传的zip包,确认解压后的根目录直接存在out文件夹,而不是先有一层项目名称文件夹再包含out。如果是后者,要么调整打包逻辑把out文件夹和依赖直接打到zip根目录,要么把Lambda的handler配置改为[项目文件夹名]/out/get-user-messages.handler。


内容的提问来源于stack exchange,提问作者shoop

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.07 17:21:03