2016-07-29 103 views
19

我git克隆了一个Node.js应用程序(在package.json中指定的版本是4.1.2,本地机器的版本是6.2.2),并试图在Heroku上推送。但它未能建立,给了这个错误:为什么Heroku无法检测到Node.js buildpack?

Failed to detect set buildpack https<span>:</span>//codon-buildpacks.s3.amazonaws&period;com/buildpacks/heroku/nodejs.tgz 

现在我的buildpack设置的Heroku /的NodeJS,我得到这个消息:当我运行git push heroku master

Buildpack set. Next release on lit-badlands-92088 will use heroku/nodejs. 
Run git push heroku master to create a new release using this buildpack. 

现在,我再次叮嘱:

remote: -----> Failed to detect set buildpack https<span>: 
</span>//codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz 

remote: More info: 
https://devcenter.heroku.com/articles/buildpacks#detection-failure 

remote: 
remote: !  Push failed 
remote: Verifying deploy... 
remote: 
remote: !  Push rejected to lit-badlands-92088. 

即使设置了Node.js构建包,也不会检测到可能的原因是什么?

回答

25

这意味着package.json文件没有被检入到你的git项目的根目录,所以Heroku检测到它不是Node.js应用程序。您可以在本地看到:

git show master:package.json 

要解决这个问题,你要确保没有在你的项目的根目录中的package.json(其中也有一个.git目录),并将其添加git:

git add package.json 
git commit -m 'track package.json' 

可以改善措词('未检测到set buildpack')。它可能应该说'未能检测到Node.js应用程序'。当buildpack的“检测”脚本运行时(https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect),它会查找package.json文件来验证是否有可用的节点应用程序可以构建。

+0

我有同样的问题,并在我的回购package.json存在。你知道什么可能是这个错误的另一个原因? – katie

+1

因此,package.json需要在.git文件夹中?在我的根目录中,我有.git和一个名为node的文件夹,并且在节点文件夹中,我有index.js和package.json。 – Shree

+1

这是因为package.json位于子目录而不是git仓库的根目录?我应该尝试将package.json移动到根目录吗? – Shree

3

我有类似的问题,这里是解决问题的步骤。

heroku buildpacks:set heroku/nodejs 
git push heroku master 

基本上细节的更多信息链接 - 如果你删除或重命名以前导致您的应用程序类型的自动检测文件


也可能会出现这种情况,因此自动在应用程序上设置检测到的buildpack。


+0

仍然不工作,我可以做的任何其他事情? – swateek

7

这是因为Heroku认为你正在部署一个Node应用程序。但是您正在部署的是Node应用程序的public目录,而不是节点代码。

Heroku使用buildpack来选择ap的处理方式。要清除该节点关联关系:

buildpacks:clear # clear all buildpacks set on the app

这意味着,“下一个发布版本检测buildpack正常。”,应该为您解决。

REF:https://devcenter.heroku.com/articles/buildpacks

+0

'heroku buildpack:清除'解决了我的问题。谢谢。 – eabates

1

上其他的答案一些微小的澄清: 错误 “不能检测设置buildpack HTTPS://codon-buildpacks.s3.amazonaws. COM/buildpacks/heroku上/ nodejs.tgz” 或任何类似的东西,意味着你试图推送给heroku的GIT COMMIT没有被检测为node.js应用程序。 (注意细节的细节)。

我最近犯了一个愚蠢的错误,让我意识到这一点:运行“ls -a”显示我的package.json和.git文件与heroku所需的位于同一根目录中。除了我的最新git提交中没有包含package.json文件。运行“git status”提醒我package.json是一个未跟踪的文件。所以我补充说,ta-da,推动heroku工作。

如果您遇到与buildpack相关的错误,请检查您的GIT COMMIT在根目录中是否有package.json文件。如果是这样,请尝试使用“heroku buildpacks:set heroku/nodejs”(或您所需的语言)手动指定构建包。这应该可以解决与构建包检测相关的大多数错误。

+0

你是男人!救了我! –

1

如果您在分支上工作,你需要设置主来跟踪你的分支

git branch -f --track master origin/branch_name

检查的package.json在主

git show master:package.json

如果它是可用的,试着再次推。

git push heroku master

`

0

大多数应用程序都存在这些特征中的至少一个,所以如果你看到这个错误,这通常意味着一个重要的文件是不签入您的Git仓库:

  • 的Java:pom.xml的

  • 红宝石:Gemfile中

  • 的Node.js:的package.json

  • 的Python:requirements.txt/setup.py/Pipfile

  • PHP:composer.json/index.php的

你应该:

git add {file} 
git commit -am 'added {file} 
git push heroku master 
相关问题