为什么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.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. 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