无法推送到Heroku

75

我正在将当前git仓库推送到heroku。那个在线应用程序是使用Scala和IntelliJ开发的。我不知道如何修复这个错误。

$ git push heroku master
Counting objects: 3, done.
Delta compression using up to 4 threads.
Compressing objects: 100% (3/3), done.
Writing objects: 100% (3/3), 531 bytes | 0 bytes/s, done.
Total 3 (delta 0), reused 0 (delta 0)
remote: Compressing source files... done.
remote: Building source:
remote: 
remote:  !     No default language could be detected for this app.
remote:             HINT: This occurs when Heroku cannot detect the         buildpack to use for this application automatically.
remote:             See https://devcenter.heroku.com/articles/buildpacks
remote: 
remote:  !     Push failed
remote: Verifying deploy....
remote: 
remote: !   Push rejected to salty-coast-14102.
remote: 
To https://git.heroku.com/salty-coast-14102.git
 ! [remote rejected] master -> master (pre-receive hook declined)
error: failed to push some refs to 'https://git.heroku.com/salty-coast-14102.git'

1
你是否已经指定了 package.json 文件? - Thamilhan
3
package.json 是用于 Node.js 应用程序的,但这似乎是一款 Scala 应用程序。 - codefinger
9个回答

47

请阅读此文档,它将向您解释要做什么。
https://devcenter.heroku.com/articles/buildpacks

设置应用程序的Buildpack

通过设置Buildpack值,您可以更改应用程序使用的Buildpack。
下次推送应用程序时,将使用新的Buildpack。

$ heroku buildpacks:set heroku/php

构建包设置。下一个随机应用程序“random-app-1234”将使用heroku/php。
运行git push heroku master以使用此构建包创建新版本。

由于您没有进行设置,因此这就是为什么它对您不起作用。

... 下次推送应用程序时,将使用新的构建包。

您还可以在应用程序创建期间指定构建包

$ heroku create myapp --buildpack heroku/python

7
感谢您的回复。但是现在它告诉我“无法检测到设置的编译包 https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz”。 - 이국화
你是否将文件放置在根目录下? - CodeWizard
2
如果这是一个 Node 项目,你还需要在根目录下包含 package.json 文件。 - CodeWizard
1
默认情况下,您不需要设置构建包。Heroku会自动检测支持的语言(其中之一是Scala)。问题在于它无法检测到Scala。 - codefinger
6
如果我不想设置构建包,怎么办?如果我只想部署一些数据文件呢? - wintermute
1
修复进展如何?(假设我们不需要为Python设置构建包) - user3750325

16

如果你是一个python用户 -
最好使用pip freeze > requirements.txt创建一个requirements.txt文件。
然后添加、提交并再次尝试推送。

如果这个方法不行,请尝试删除.git(注意这可能会删除相关的git历史记录),然后重新按上述步骤操作。

对我来说起作用了。


谢谢。我希望我们能从Heroku收到更详细的错误信息。 - maininformer

16

您的项目根目录中必须有一个名为.git的文件夹。

如果您没有看到该文件夹,请运行git init,然后重新关联远程仓库。

操作如下:

heroku git:remote -a herokuAppName
git push heroku master

12
请解释一下您的解决方案如何修复“此应用程序无法检测到默认语言”的问题。您的回答似乎与问题无关? @ciscokidx,请解释您的解决方案如何修复“此应用程序无法检测到默认语言”的问题。 您的答案似乎与问题无关? - JK.
1
@JK 看起来Heroku也需要.git目录在根文件夹中。这对我有用。 - jarofclay
1
在提供的日志中出现了git,并且git正在工作,因此这个答案完全不相关。 - Bogdan Mart
我的应用程序在git仓库的子文件夹中,这导致了问题的出现。这个答案帮助我意识到我应该将应用程序移动到根目录。谢谢。 - theisof
解决了我的问题。我以为使用PyCharm时,项目默认包含.git目录,但实际上并没有。非常感谢。 - Anass Lahrech

11

请确保在项目的根目录下有 package.json 文件。 祝您愉快编码 :)


3

创建应用程序时指定构建包。

heroku create appname --buildpack heroku/python

3

如果您的应用是Scala应用程序,则必须在根目录中有一个build.sbt文件,并且该文件必须被检入到Git。您可以通过运行以下命令来确认此操作:

$ git ls-files build.sbt

如果该文件已存在并已提交到Git,请尝试运行以下命令:
$ heroku buildpacks:set heroku/scala

2
你也可以从UI手动选择webpack构建。 enter image description here 最初的回答:您可以在UI中手动选择webpack构建。

我应该在哪里找到这个? - Dhiru
@Dhiru,在设置选项卡中。 - Smit

0

-1
如果你正在使用Django应用程序部署到Heroku上, 请确保在requirements.txt文件中添加request库。

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