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

通过Serverless部署Node20 AWS Lambda函数遇CommonJS模块导入错误

问题排查与解决方案

1. 升级Serverless Framework版本

旧版本的Serverless对Node.js 20.x Lambda运行时的打包逻辑存在兼容性问题,会导致部署后模块加载异常。

  • 执行命令升级到最新稳定版:
    npm install -g serverless@latest
    

2. 修改Handler导出形式

虽然CommonJS规范支持对象式导出,但Node20.x的Lambda运行时加载器对这种导出的解析存在差异。

  • 将handler文件的导出代码改为直接绑定形式:
    const handler = async (event, context) => {
      console.log('event:', JSON.stringify(event), JSON.stringify(context));
    
      try {
        return await routeInvoice(event);
      } catch (err) {
        console.error('routeInvoice handler error:', err);
        throw err;
      }
    };
    
    // 替换原对象导出为直接赋值
    module.exports.handler = handler;
    

3. 检查Serverless打包配置

确认serverless.yml中的打包规则没有误排除handler所在文件:

  • 如果有自定义package配置,确保包含目标文件路径:
    package:
      include:
        - src/functions/**
    

4. 验证打包文件完整性

本地执行依赖原生文件结构,而云端依赖打包后的zip包,可能存在路径或文件缺失:

  • 执行sls package生成打包文件,在.serverless目录下解压对应zip包,确认src/functions/routeInvoice/routeInvoice.js存在且路径与配置一致。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.02 21:55:04