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

使用AWS SDK V2与Multer S3 V3上传至S3时遇this.client.send不是函数错误

解决AWS SDK V2搭配multer-s3 V3上传S3时的TypeError: this.client.send is not a function错误

问题根源

multer-s3 v3版本是为AWS SDK for JavaScript v3设计的,它依赖v3客户端的send方法实现上传逻辑。但你传入了AWS SDK v2的S3客户端,两者API不兼容,导致触发该错误。

解决方案

方案1:切换到AWS SDK v3的S3客户端

适配multer-s3 v3的要求,使用v3版本的S3客户端:

  1. 安装所需依赖:
npm install @aws-sdk/client-s3 @aws-sdk/lib-storage multer-s3
  1. 示例代码:
const { S3Client } = require("@aws-sdk/client-s3");
const multer = require('multer');
const multerS3 = require('multer-s3');

// 初始化AWS SDK v3的S3客户端
const s3Client = new S3Client({
  region: '你的区域ID',
  credentials: {
    accessKeyId: '你的访问密钥',
    secretAccessKey: '你的密钥密码'
  }
});

// 配置multer-s3上传规则
const upload = multer({
  storage: multerS3({
    s3: s3Client, // 传入v3客户端实例
    bucket: '你的存储桶名称',
    key: (req, file, cb) => {
      // 自定义文件存储路径/名称
      cb(null, `${Date.now()}-${file.originalname}`);
    }
  })
});

// 接口使用示例
app.post('/upload', upload.single('file'), (req, res) => {
  res.send('文件上传完成');
});

方案2:降级multer-s3到兼容AWS SDK v2的版本

如果需要继续使用AWS SDK v2,将multer-s3降级到v2.x系列(该版本兼容v2客户端):

  1. 卸载当前multer-s3 v3:
npm uninstall multer-s3
  1. 安装兼容版本:
npm install multer-s3@2
  1. 示例代码:
const AWS = require('aws-sdk');
const multer = require('multer');
const multerS3 = require('multer-s3');

// 初始化AWS SDK v2的S3客户端
const s3 = new AWS.S3({
  region: '你的区域ID',
  accessKeyId: '你的访问密钥',
  secretAccessKey: '你的密钥密码'
});

// 配置multer-s3上传规则
const upload = multer({
  storage: multerS3({
    s3: s3, // 传入v2客户端实例
    bucket: '你的存储桶名称',
    key: (req, file, cb) => {
      cb(null, `${Date.now()}-${file.originalname}`);
    }
  })
});

// 接口使用示例
app.post('/upload', upload.single('file'), (req, res) => {
  res.send('文件上传完成');
});

注意事项

  • 不要混合使用AWS SDK v2和v3的客户端,两者API差异较大,容易引发兼容问题
  • 若使用环境变量配置AWS凭证(AWS_ACCESS_KEY_ID、AWS_SECRET_ACCESS_KEY),客户端会自动读取,无需手动传入credentials参数

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.23 02:37:12