AWS Lambda(Node.js 14.x)出现SyntaxError: Unexpected token 'export'错误求助
AWS Lambda(Node.js 14.x)出现SyntaxError: Unexpected token 'export'错误求助
嘿,我来帮你捋捋这个问题!这个错误的根源其实很明确:你在Index.js里用了ES模块的export语法,但Node.js 14.x版本的Lambda默认是使用CommonJS模块系统的,它根本不认识export这个关键字,所以直接抛出了语法错误。
最直接的修复方案
你只需要把Index.js里的导出语句改成CommonJS的格式就行,和你Register.js里的写法保持一致:
原来的代码:
export const handler = async(event) => { // 你的代码逻辑 };
改成:
exports.handler = async(event) => { // 你的代码逻辑 };
为什么你之前的尝试没解决问题?
- 加
"type": "module"到package.json:这会让Node.js把所有文件当作ES模块,但这样你所有的require语句都得改成import(比如const registerService = require('./services/register')要改成import registerService from './services/register.js'),而且Node.js 14.x对ES模块的支持还是实验性的,Lambda环境下容易出现其他兼容性问题。 - 升级到Node.js 18.x:虽然18.x对ES模块支持更好,但如果你还是混合使用
require和export,依然会报错,需要全量替换模块语法,反而不如直接改成CommonJS来得省心。
验证修复
修改完导出语句后,重新部署你的Lambda函数,再用Postman测试接口,这个语法错误应该就消失啦!
备注:内容来源于stack exchange,提问作者Muhammad Gajendra Adhirajasa
相关产品推荐
相关产品推荐

