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

使用Layer时AWS Lambda无法导入模块:找不到包的常见问题

排查Node.js 18.x AWS Lambda Layer引入ES模块失败的常见问题

以下是几个容易遗漏的排查点,对应你遇到的aws-jwt-verify模块找不到的情况:

  • Layer目录结构错误
    Node.js Lambda Layer要求模块必须放在nodejs/node_modules层级下,Lambda会自动将Layer的nodejs目录加入NODE_PATH。解压你的Layer压缩包,确认目录结构是nodejs/node_modules/aws-jwt-verify,如果直接把node_modules放在压缩包根目录,Lambda完全找不到模块。

  • 打包时未匹配Lambda运行环境
    如果你在本地Windows/macOS直接npm install依赖,会生成对应平台的二进制文件,上传到Linux环境的Lambda后会加载失败。正确做法是针对Lambda架构安装依赖:

    # 针对x86_64架构
    npm install --platform=linux --arch=x64 aws-jwt-verify
    # 针对arm64架构
    npm install --platform=linux --arch=arm64 aws-jwt-verify
    

    之后再将nodejs目录打包成Layer zip。

  • ES模块相关配置缺失
    如果你在Lambda函数代码中使用import语法,需要确保函数根目录的package.json中添加了"type": "module"字段——Node.js 18.x默认以CommonJS模式运行,没有这个配置会导致ES模块加载逻辑异常。

  • Lambda与Layer关联异常
    检查Lambda控制台的「Layers」标签,确认关联的是正确的Layer版本,有时候修改Layer后未发布新版本就重新测试,或者关联操作未保存,都会导致还是用旧的无效Layer。如果是跨账号Layer,还要确认Lambda执行角色有lambda:GetLayerVersion权限。

  • 导入路径写法错误
    确保导入语句直接使用包名,不要写相对路径:

    // 正确写法
    import { CognitoJwtVerifier } from 'aws-jwt-verify';
    // 错误写法(不要加相对路径)
    import { CognitoJwtVerifier } from './node_modules/aws-jwt-verify';
    

    Layer模块会被自动加入NODE_PATH,直接引用包名即可被Node.js识别。

  • Lambda缓存干扰
    Lambda存在代码缓存机制,即使更新了Layer,旧的缓存可能还在生效。可以尝试发布新的Layer版本并重新关联,或者创建一个全新的测试Lambda函数关联Layer,验证是否能正常加载模块。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 11:15:20