git,Heroku:拒绝预接收挂钩

63

我正在设置一个git仓库并尝试将其链接到Heroku。当我运行以下命令时:

git push heroku master

我收到了

Counting objects: 7, done.
Delta compression using up to 2 threads.
Compressing objects: 100% (5/5), done.
Writing objects: 100% (7/7), 714 bytes, done.
Total 7 (delta 1), reused 0 (delta 0)

-----> Heroku receiving push

 !     Heroku push rejected due to an unrecognized error.
 !     We've been notified, see http://support.heroku.com if the problem persists.


To git@heroku.com:morning-stream-3712.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'git@heroku.com:morning-stream-3712.git'

如何将我的应用程序部署到Heroku?


1
与此相关?https://dev59.com/sFzUa4cB1Zd3GeqPywLR - CambridgeMike
3
请时刻查看 https://status.heroku.com/ ,今天平台出现了错误。 - John Beynon
@John:他们的平台在过去一个月里几乎每天都出现错误,不仅仅是今天。我建议稍后再尝试推送。 - Batkins
25个回答

41

确保你正在推送一个包含适当支持的应用程序(Rails、Django等)的仓库,而不是只是推送一些随意的仓库进行测试。

Heroku新手:将我的应用程序推送到Heroku时出错

如果不是这种情况,而你认为你正在推送一个有效的应用程序,请联系Heroku支持,他们会为你解决问题。


1
你懂了,那就是问题所在。当你访问http://morning-stream-3712.heroku.com/时,“Hello Rack!”成功地打印到屏幕上 :) - wuliwong
2
谢谢!需要 "package.json" 文件,这样 heroku 才知道它是一个 Node 应用程序。 - trogne
1
对我来说,我必须执行以下操作: 在命令提示符中输入 Heroku 日志, 然后我看到了真正的错误——我有太多的 Heroku 远程。我花了 5 天时间解决它——真的。不用谢。 - ItaiRoded
谢谢!此外,对于Heroku来说,即使已经存在了一些secrets.json文件,也很重要要推送它们。 - Sergo

17

确保你正在使用npm或yarn.lock文件-

发现了两个不同的锁定文件:package-lock.json和yarn.lock npm和yarn都为此应用程序创建了锁定文件, 但只能使用一个来安装依赖项。

删除yarn.lock并将代码再次推送到git后,我的问题得到解决。


我遇到了同样的问题,删除 package-lock.json 文件并将代码再次推送到 git 上后,我的问题得到了解决,谢谢。 - Aland Sleman
为什么package-lock会引起问题呢? - benwl

12

删除package-lock.json文件解决了我的问题。


1
对我来说,将 package-lock.json 添加到我的提交中。 - MonsterWimp757

8

首先,禁用collectstatic:

heroku config:set DISABLE_COLLECTSTATIC=1

然后运行:

git push heroku master

更多详细步骤,请在此处查看


5
我遇到了同样的问题:
! [remote rejected] vX.X.XX -> master (pre-receive hook declined) 
error: failed to push some refs to 'git@heroku.com:[application-name]'

我发现我的Heroku应用程序堆栈是“cedar-10”,该堆栈从2014年4月11日起已被弃用,并在2015年4月11日停用(Cedar-14现已普遍可用)。
解决方案是按照指南升级Heroku应用程序堆栈: 将生产应用程序升级到Cedar-14

4
在生产环境下,您无法使用sqlite3作为Rails应用的默认数据库,这可能是另一个问题。为了解决这个问题,只需将Rails应用使用的数据库更改为Postgres即可。您可以通过编辑Gemfile轻松实现这一点。从Gemfile中删除以下内容:
gem sqlite3;

并添加以下内容:
group :development, :test do
  gem 'sqlite3'
end

group :production do
  gem 'pg'
end

你应该在本地和生产环境中始终使用相同的数据库类型。否则,你无法确定某些特定于数据库的内容是否会成为问题。 - Simon Franzen

1

我曾经遇到过同样的问题,但是是在一个Django应用中。后来发现pip无法下载/安装requirements.txt文件中的一个依赖项(它是eyeD3)。


1

我有点晚来到这个游戏,其中一个问题是我的sshkey过时了。只需要在设置中更新即可。

另一件事是我正在推Python Django CMS,但在部署过程中运行python manage.py collectstatic时失败了。因此,请确保您检查日志heroku logs --tail。这给了我另一个提示,可以关闭collectstatic,它甚至告诉您要键入什么以关闭它。


1
如果将来有人需要,即使我是初学者并且不太了解Heroku,您可能已经在runtime.txt文件中请求了一个堆栈不支持的版本。
从python-3.8.2更改为python-3.8.10帮助我解决了这个问题。您可以在此处查看支持的堆栈: https://devcenter.heroku.com/articles/python-support

1
我决定逐行阅读日志。 以下是错误日志的一部分:
remote:        > gbt-ltd-website-frontend@0.1.0 build /tmp/build_c37edf59
remote:        > react-scripts build
remote:        
remote:        Creating an optimized production build...
remote:        Failed to compile.
remote:        
remote:        Cannot read property 'toLowerCase' of undefined
remote:        CompileError: Begins at CSS selector .Styles_hone__1Uuf2
remote:        
remote:        
remote: npm ERR! code ELIFECYCLE
remote: npm ERR! errno 1
remote: npm ERR! gbt-ltd-website-frontend@0.1.0 build: `react-scripts build`
remote: npm ERR! Exit status 1
...
remote: !       Push rejected to gbtstructurals.
remote: 
To https://git.heroku.com/gbtstructurals.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/gbtstructurals.git'

从错误开始的地方,"npm ERR! code ELIFECYCLE",我进行了阅读并找到了实际的错误原因。它是一个CSS规则。我首先删除了该规则并构建了代码。然后检查我的声明,发现我自相矛盾。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接