AWS Amplify部署出现DuplicateError重复文件或模拟包报错如何解决
AWS Amplify部署DuplicateError报错解决指南
DuplicateError: Duplicated files or mocks. Please check the console for more info
该报错核心原因是项目打包产物中存在重复路径/文件名的资源,或是测试类mock文件被误纳入打包范围,触发了Amplify的部署校验规则。以下为分步操作指引:
第一步:本地优先排查重复文件(最高效解决路径,优先操作)
- 检查项目
public文件夹和所有静态资源存放目录,是否存在同名文件(大小写不同也会被判定重复,比如logo.png和logo.PNG,Windows本地不区分大小写,部署到AWS环境会触发报错) - 检查测试类文件是否被纳入打包规则:查看
package.json中build命令配置,确认__mocks__文件夹、*.test.js/*.spec.js这类测试相关文件已被排除在打包范围外 - 本地执行一次构建命令(比如
npm run build),打开生成的dist/build/out文件夹,全局搜索重复文件名,确认本地构建产物本身没有重复资源
第二步:修改AWS Amplify控制台构建设置(本地排查无问题时执行)
- 登录AWS控制台,搜索进入Amplify服务页,找到当前部署失败的项目
- 左侧菜单栏选择「构建设置」->「构建镜像设置」,点击「编辑」
- 对应你的项目框架修改构建命令:
- React(create-react-app创建):将build命令修改为
GENERATE_SOURCEMAP=false npm run build(关闭sourcemap生成,大部分重复报错是sourcemap文件重复导致) - Next.js:将build命令修改为
npm run build && rm -rf .next/cache(清除构建缓存避免重复缓存文件被部署)
- React(create-react-app创建):将build命令修改为
- 切换到「高级设置」->「环境变量」,点击「添加变量」,变量名填
DISABLE_AMPLIFY_COMMANDER,值填true,保存配置 - 回到项目「部署」页面,点击「重新部署」即可
兜底解决方案
如果上述操作都无法解决,在项目根目录新建amplify.yml文件,内容如下,推送到代码仓库后重新触发部署即可:
version: 1 frontend: phases: preBuild: commands: - npm ci build: commands: - npm run build # 自动删除构建产物中的重复文件 - find build -type f -exec md5sum {} \; | sort -k 1 | uniq -w32 -d | cut -d' ' -f3 | xargs rm -f artifacts: baseDirectory: build files: - '**/*' cache: paths: - node_modules/**/*
报错参考截图

内容的提问来源于stack exchange,提问作者Misa
相关产品推荐
相关产品推荐

