Next.js 集成 AWS SDK 时出现构建错误求助
解决Next.js构建时
Cannot get final name for export 'NO_RETRY_INCREMENT'错误 问题分析
这个错误源于@smithy/util-retry包的导出处理异常,核心问题是AWS SDK v3相关依赖版本不匹配,同时项目中并存AWS SDK v2和v3包,大概率引发了依赖冲突。从你的package.json能看到,@aws-sdk/client-s3(3.627.0)、@aws-sdk/middleware-sdk-s3(3.626.0)、@aws-sdk/s3-request-presigner(3.622.0)版本差异明显,这会导致依赖解析混乱。
解决方案
1. 统一AWS SDK v3依赖版本
把所有AWS SDK v3相关包升级到同一版本,推荐用最新兼容版:
- 修改package.json中的对应依赖:
"@aws-sdk/client-s3": "^3.627.0", "@aws-sdk/middleware-sdk-s3": "^3.627.0", "@aws-sdk/s3-request-presigner": "^3.627.0"
- 执行命令重新安装依赖:
rm -rf node_modules package-lock.json # yarn项目用yarn.lock npm install # yarn项目用yarn install
2. 移除冗余的AWS SDK v2依赖
如果项目已经完全迁移到AWS SDK v3,直接卸载v2版本:
npm uninstall aws-sdk
如果必须保留v2,可通过npm resolutions强制统一@smithy/util-retry版本,避免冲突:
在package.json中添加:
"resolutions": { "@smithy/util-retry": "^3.0.0" }
然后执行:
npm install
3. 调整Next.js webpack配置(可选)
若上述方法无效,在next.config.js中添加webpack配置,强制指定依赖解析路径:
/** @type {import('next').NextConfig} */ const nextConfig = { webpack: (config) => { config.resolve.alias['@smithy/util-retry'] = require.resolve('@smithy/util-retry'); return config; }, }; module.exports = nextConfig;
4. 清除构建缓存
执行Next.js缓存清除命令后重新构建:
next build --no-cache
验证
完成上述操作后,再次运行next build,检查编译错误是否消失。
内容的提问来源于stack exchange,提问作者Jrakru56
相关产品推荐
相关产品推荐

