Heroku部署React+Node全栈项目时build脚本无限重复如何解决?
问题原因
你的构建死循环根本原因是client目录下的package.json缺少独立的build脚本配置。当你在根目录执行npm run build时,脚本会进入client目录执行npm run build,此时npm会优先查找当前目录(client)的package.json里的build命令,如果找不到就会向上递归查找父级目录的package.json,刚好根目录的build命令又是进入client执行build,就形成了无限递归循环。
解决方案
- 第一步:检查client目录下的package.json文件,在scripts字段中添加React项目的构建命令,如果你用的是create-react-app初始化的项目,配置如下:
{ "scripts": { "start": "react-scripts start", "build": "react-scripts build", "test": "react-scripts test", "eject": "react-scripts eject" } }
- 第二步:优化根目录的package.json脚本,移除build命令里冗余的npm install,Heroku会自动处理依赖安装,也可以替换为专门的Heroku构建钩子避免冲突:
{ "scripts": { "start": "node server/index.js", "heroku-postbuild": "cd client && npm run build" } }
- 第三步:确保你的.gitignore文件中已经添加了根目录和client目录的node_modules,不要把依赖包提交到Git仓库,避免构建时出现依赖冲突。
- 第四步:本地先执行根目录的npm run build命令验证,确认不会出现循环、可以正常生成client/build目录的静态资源后,再推送到Heroku重新构建即可。
内容的提问来源于stack exchange,提问作者Maiko vd Veen
相关产品推荐
相关产品推荐

