Heroku部署全栈应用报错:Command 'build' not found求助
解决Heroku部署Node.js + React全栈应用的Build失败问题
我帮你分析下部署时遇到的错误,核心问题和修复方案如下:
1. 修复heroku-postbuild脚本的冗余依赖安装
你的根目录package.json里的heroku-postbuild脚本存在逻辑问题:
"heroku-postbuild": "cd client && yarn install && yarn install --only=dev --no-shrinkwrap && yarn run build"
第二次执行yarn install --only=dev会覆盖第一次安装的完整依赖,而react-scripts(用于执行build命令)是client项目的生产必需依赖(在dependencies中),只安装dev依赖会直接导致找不到build命令。
修改为精简且正确的脚本:
"heroku-postbuild": "cd client && yarn install && yarn build"
2. 指定Node和Yarn版本(避免兼容性问题)
Heroku默认会使用最新的Node版本,但可能和你本地开发环境不一致,引发依赖安装或构建失败。在根目录和client目录的package.json中添加engines字段,比如:
"engines": { "node": "16.x", "yarn": "1.x" }
版本号可以改成你本地正在使用的版本(执行node -v和yarn -v查看即可)。
3. 解决No license field警告(可选但推荐)
这个警告不影响构建,但可以通过在根目录和client目录的package.json中添加license字段消除:
"license": "MIT"
如果不想公开授权,可以使用"license": "UNLICENSED"。
额外验证步骤
- 本地测试:在终端执行
cd client && yarn build,确认能正常生成build目录,排除本地构建逻辑问题。 - 检查
.gitignore:确保node_modules、client/node_modules和client/build都被忽略,避免提交本地依赖或构建产物到Git。
完成以上修改后,重新提交代码到Heroku应该就能正常构建了。
内容的提问来源于stack exchange,提问作者Mohd Hassan
相关产品推荐
相关产品推荐

