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

如何在多个AWS Lambda中复用自定义NodeJS代码且无需发布至npm

方案1:无需发布npm的标准Node.js Lambda层打包方法

你遇到的报错和package-lock.json完全无关,核心原因是层的zip压缩包目录结构不符合AWS Lambda的要求,按以下步骤操作即可:

  • 如果你是在原有层的基础上修改:直接把你写的mypack自定义包文件夹,放到原有层的nodejs/node_modules目录下,确保最终的zip解压后目录结构如下:
    nodejs/
    ├── node_modules/
    │   ├── 原有依赖包1/
    │   ├── 原有依赖包2/
    │   └── mypack/ # 你的自定义包
    │       ├── package.json
    │       └── index.js
    └── package-lock.json(原有文件不用改)
    
  • 选中nodejs文件夹直接打包为zip(注意不要把外层的父目录打进压缩包,解压后必须直接能看到nodejs文件夹)
  • 上传zip作为Lambda层的新版本,关联到你的函数后,直接用const mypack = require('mypack')即可正常调用,完全不需要把包发布到公共npm仓库。

方案2:绝对路径直接引用层内文件

如果你不想走Node.js模块加载逻辑,直接引用单个js文件也可以,所有Lambda层的内容都会被固定挂载到/opt目录下,操作步骤如下:

  • 把你的自定义代码文件(比如sort.js)直接放到nodejs文件夹下,打包成zip上传为层
  • 在Lambda函数中直接用固定路径引用即可:
    const sortUtil = require('/opt/nodejs/sort.js');
    // 直接调用自定义方法
    sortUtil.mySortFunc();
    

如果你的代码文件直接放在zip的根目录(没有嵌套nodejs文件夹),引用路径就是/opt/sort.js。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.07 04:27:03