为什么Heroku无法检测到Node.js构build包?

我git克隆了一个Node.js应用程序(在package.json中指定的版本是4.1.2,而我的本地机器版本是6.2.2),并试图在Heroku上推git。 但它没有build立,并给出了这个错误:

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

现在我把buildpack设置为heroku / nodejs,我得到这个消息:

 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. 

现在当我运行git push heroku master ,我又被告知:

 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 buildpack,可能的原因是什么?

这意味着一个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' 

措辞('未能检测到build立包装')可以改进。 它可能应该说'未能检测到Node.js应用程序'。 当buildpack的“detect”脚本运行( https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect )时,它会查找一个package.json文件来validation是否有节点应用可用于构build。

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

Heroku使用buildpack来selectap的处理方式。 你想清除节点关联:

buildpacks:clear # clear all buildpacks set on the app

这意味着“下一个版本将正常检测到buildpack”,这应该为你解决。

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

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

 heroku buildpacks:set heroku/nodejs git push heroku master 

基本上的细节是在更多的信息链接 –


如果删除或重命名以前导致自动检测应用程序types的文件,并因此在应用程序上自动检测到的buildpack,则也可能出现这种情况。


其他答案的一些小小的澄清:错误“无法检测集buildpack https://codon-buildpacks.s3.amazonaws&period; com / buildpack / heroku / nodejs.tgz”或类似的东西,意味着说你正在尝试的GIT COMMIT推到heroku不DETECTED作为一个node.js应用程序。 (请注意微妙的首都)。

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

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

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

git branch -f --track master origin/branch_name

检查master中的package.json

git show master:package.json

如果可用,请尝试再次推送。

git push heroku master

`

大多数应用程序至less有一个签​​名出现,所以如果你看到这个错误,通常意味着一个重要的文件没有签入你的git仓库:

  • Java:pom.xml

  • Ruby: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