Node S3Client报错input.useDualstackEndpoint is not a function如何解决
问题原因
该错误由AWS SDK v3的各依赖包版本不匹配导致。AWS SDK v3采用模块化拆分发布规则,所有@aws-sdk/开头的关联包必须保持版本号一致,否则内部依赖的方法签名变更会触发调用异常。
你当前使用的@aws-sdk/client-s3版本为3.41.0,@aws-sdk/node-http-handler版本为3.40.0,两个依赖版本不一致,导致底层共同依赖的config-resolver包版本冲突,才会出现input.useDualstackEndpoint is not a function的报错。
解决方案
- 首先统一所有
@aws-sdk相关依赖的版本号,将package.json中的两个依赖版本调整为完全一致,示例如下:
"@aws-sdk/client-s3": "^3.41.0", "@aws-sdk/node-http-handler": "^3.41.0"
你也可以选择将两个包都升级到最新的稳定版,只要保证版本号完全相同即可。
- 删除项目本地的node_modules文件夹,以及包锁文件(package-lock.json或yarn.lock),重新执行
npm install或yarn install安装依赖,确保所有@aws-sdk下的子依赖版本完全对齐。 - 功能优化建议:
ListObjectsCommand是旧版S3列出对象接口,更推荐使用你测试过的ListObjectsV2Command,返回结构更合理,性能也更优,版本对齐后两个接口都可以正常调用。
验证
重新打包部署Lambda函数后,调用S3列对象接口即可正常返回结果,不会再触发该类型错误。
内容的提问来源于stack exchange,提问作者asm
相关产品推荐
相关产品推荐

