React部署AWS Amplify报错:构建目录不存在排查求助
排查AWS Amplify部署React应用时的build目录不存在问题
1. 确认package.json的build脚本配置
打开你的package.json,查看scripts字段里的build命令:
"scripts": { "build": "react-scripts build" }
- 必须确保
build命令存在,且执行后会将产物输出到build目录(React项目默认是这个路径,如果你自定义了输出目录比如dist,那Amplify的artifact路径也要同步改成dist)。 - 本地执行
npm run build后,确认项目根目录(或对应的子目录)下确实生成了build文件夹。
2. 修正amplify.yml的构建流程
如果你的React项目在仓库的子目录(比如myapp),amplify.yml需要先切换到子目录再执行构建,示例配置如下:
version: 1 frontend: phases: preBuild: commands: - cd myapp - npm install build: commands: - npm run build artifacts: baseDirectory: myapp/build files: - '**/*' cache: paths: - myapp/node_modules/**/*
- 重点检查
preBuild里的cd命令是否指向正确的项目目录,artifacts.baseDirectory必须和实际build产物的路径完全匹配(可以写成./myapp/build,但不要加多余的尾部斜杠)。 - 如果项目在仓库根目录,直接去掉
cd myapp命令,baseDirectory设为build即可。
3. 查看Amplify构建日志的完整输出
进入Amplify控制台的对应构建记录,查看Build阶段的详细日志:
- 重点找
npm run build的执行结果,如果build过程中出现报错(比如依赖缺失、语法错误、node版本不兼容),会直接导致build失败,自然不会生成build目录。很多时候用户只看到最后“目录不存在”的错误,忽略了前面的build失败原因。 - 确认日志里是否有
The build folder is ready to be deployed这类提示,这说明build成功,此时再核对产物路径是否和yml配置一致。
4. 统一本地与Amplify的Node.js版本
Node.js版本不一致是常见的build失败原因:
- 在package.json里添加
engines字段,指定项目兼容的node版本:
"engines": { "node": "16.x" }
- 进入Amplify控制台的构建设置页面,将Node.js版本修改为你指定的版本(比如16.x),确保和本地开发环境使用的版本一致。
内容的提问来源于stack exchange,提问作者SovietFrontier
相关产品推荐
相关产品推荐

