AWS Lambda出现ReferenceError:exports未在ES模块作用域定义求助
解决AWS Lambda中“exports is not defined in ES module scope”错误
错误原因
你用了.mjs后缀的文件,这是ES模块(ECMAScript Modules)的标识,而exports.handler是CommonJS模块的导出语法——两种模块系统不兼容,所以触发了ReferenceError。
解决方法
方法1:改用ES模块导出语法
把原代码里的CommonJS导出改成ES模块的格式:
export const handler = async (event) => { // 你的Hello World逻辑示例 const { firstName, lastName } = event; return { statusCode: 200, body: JSON.stringify(`Hello, ${firstName} ${lastName}!`) }; };
方法2:切换为CommonJS模块格式
如果想继续用exports.handler,直接把文件名从index.mjs改成index.js即可——Lambda默认会将.js文件按CommonJS模块处理,无需额外配置。
额外注意
- 若坚持用
.mjs,确保你的Lambda运行时是Node.js 14.x及以上版本(这些版本原生支持ES模块) - 测试事件的JSON要保证格式正确,比如:
{ "firstName": "Jane", "lastName": "Smith" }
内容的提问来源于stack exchange,提问作者Tyler Schnitzer
相关产品推荐
相关产品推荐

