推送全栈应用后端至Heroku时出现[remote rejected]错误(pre-receive hook declined)的技术求助
解决Heroku推送失败(pre-receive hook declined)的问题
从你给出的错误信息来看,核心有两个问题导致推送失败:Heroku无法检测到项目的默认语言,以及重复提交了相同版本的代码。下面是针对性的解决步骤:
1. 修复语言检测失败的问题
错误日志里明确提到:! No default language could be detected for this app.,这是Heroku构建失败的主要原因,解决方法如下:
- 确认你的后端项目根目录(也就是你执行Git命令的目录,或Git仓库的根目录)包含对应语言的核心配置文件:
- 如果是Node.js后端,必须有
package.json,而且文件里要包含scripts.start字段(比如"start": "node server.js"),Heroku依赖这个脚本启动应用 - 检查是否存在多余的包管理文件:哪怕你没装yarn,如果不小心生成了
yarn.lock,删掉它并提交修改:git rm yarn.lock git commit -m "Remove accidental yarn lock file"
- 如果是Node.js后端,必须有
- 确认Git仓库结构正确:你当前执行命令的路径是
C:\Users\Amman\dunder-mifflin\src\backend,要确保这个目录是Git仓库的根(或者你要推送的代码就是这个目录下的所有内容)。如果Git仓库根在dunder-mifflin,Heroku会读取根目录的文件,可能找不到后端的配置,这时候需要调整仓库结构,或者单独为后端创建Git仓库。
2. 解决重复提交版本的问题
错误里的警告提示:The same version of this code has already been built,说明你推送的代码和之前的提交哈希完全一致,Heroku会拒绝重复构建,解决方法:
- 如果你在非master分支开发,推送时需要指定分支映射到Heroku的主分支(现在Heroku默认主分支是
main,不是master),用这个命令:git push heroku <你的本地分支名>:main - 如果确实需要重新部署相同代码,创建一个空提交强制触发构建:
git commit --allow-empty -m "Force trigger Heroku rebuild" git push heroku master
最后验证
完成上面的步骤后,重新执行git push heroku master(或者对应的分支映射命令),应该就能成功推送了。
内容的提问来源于stack exchange,提问作者AmmanM
相关产品推荐
相关产品推荐

