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

Lambda升级Node.js 18x后出现Cannot find module 'aws-sdk'错误求助

Lambda Node.js 18x升级后"Cannot find module 'aws-sdk'"问题解决

问题根源

你安装的是AWS SDK for JavaScript v3的包(@aws-sdk/client-s3等),但代码里依然使用v2的写法const AWS = require('aws-sdk')——v3没有顶层的aws-sdk模块,所以会触发找不到模块的错误。

两种解决方案

方案1:迁移到AWS SDK v3(推荐)

v3采用模块化设计,按需导入客户端,更轻量化且符合新版本运行时的最佳实践。针对你的代码调整如下:

  1. 保留现有v3依赖,修改index.js中的AWS SDK相关代码:
const https = require('https');
const { S3Client } = require("@aws-sdk/client-s3");
const proxy = require('proxy-agent');

// 创建S3客户端并配置代理和区域
const s3Client = new S3Client({
  region: process.env.AWS_REGION,
  requestHandler: new https.Agent({
    agent: proxy(process.env.PROXY_URL)
  })
});

// 后续调用S3 API示例(按需调整):
// const { GetObjectCommand } = require("@aws-sdk/client-s3");
// await s3Client.send(new GetObjectCommand({ Bucket: '你的存储桶名', Key: '对象键' }));
  1. 执行npm install确保依赖安装完成
  2. 重新打包部署Lambda

方案2:继续使用AWS SDK v2(快速临时修复)

如果暂时不想调整代码结构,可以直接安装v2的aws-sdk包:

  1. 在项目根目录执行命令:
npm install aws-sdk --save
  1. 此时package.json的dependencies会新增"aws-sdk": "^2.x.x"条目
  2. 执行npm install后重新打包部署Lambda

额外注意事项

  • 确认打包时node_modules目录被包含在zip包中(你的zip脚本zip ../service-now-api.zip -r .已覆盖此需求)
  • Lambda Node.js 16x及以上运行时不再内置AWS SDK v2,必须手动引入依赖,无论选择v2还是v3版本

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.18 04:27:16