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

在Amplify CLI创建的AWS Lambda中使用ES Modules遇错求助

解决Amplify CLI创建的Lambda ESM兼容问题

核心问题原因

Amplify CLI默认生成的Lambda函数配置与打包逻辑,未完全适配ESM模块模式,即便在package.json中设置"type":"module",运行时仍会以CommonJS方式加载模块,触发ERR_REQUIRE_ESM错误。

具体解决方案

1. 调整入口文件的ESM语法

将默认的CommonJS写法改为ESM规范:

  • 原index.js(CommonJS):
exports.handler = async (event) => {
  // 函数逻辑
};
  • 修改为ESM语法:
export const handler = async (event) => {
  // 函数逻辑
};

2. 配置Amplify打包规则

在Lambda函数目录下创建amplify.yml(路径:amplify/backend/function/test/amplify.yml),添加打包配置确保Amplify CLI正确处理ESM模块:

backend:
  phases:
    build:
      commands:
        - cd src
        - npm install
frontend:
  phases:
    build:
      commands:
        - echo "No frontend build needed"
  artifacts:
    baseDirectory: src
    files:
      - '**/*'

3. 本地模拟的适配操作

若amplify mock function仍报错,需确保本地Node.js版本与Lambda运行时(14.x/18.x)一致,同时在函数src目录下执行npm install,避免依赖包的CommonJS/ESM冲突。

4. 云端部署的验证要点

部署前确认:

  • Lambda运行时设置为Node.js 14.x或18.x
  • 函数执行角色权限配置正常
  • 部署后在Lambda控制台测试,排查模块加载类错误

补充说明

部分第三方ESM包可能需额外处理:比如确认依赖包package.json的type字段为module,或使用动态导入import()方式加载混合模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.05 02:10:51