我git克隆了一个Node.js应用程序(package.json
中指定的版本为4.1.2
,我本地机器的版本为6.2.2
)并尝试git push on Heroku。但它没有构建并给出了这个错误:
无法检测到set buildpack https://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://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,可能的原因可能是什么?
答案 0 :(得分:30)
这意味着未将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 app'。当运行buildpack的“detect”脚本(https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect)时,它会查找package.json文件以验证是否有可用于构建的节点应用程序。
答案 1 :(得分:8)
这是因为Heroku认为您正在部署Node应用程序。但您正在部署的是节点应用的public
目录,而不是节点代码。
Heroku使用buildpacks来选择ap的处理方式。您想要清除该节点关联:
buildpacks:clear # clear all buildpacks set on the app
这意味着“下一个版本将正常检测buildpack。”,这应该为您解决。
答案 2 :(得分:4)
我有类似的问题,以下是解决问题的步骤。
heroku buildpacks:set heroku/nodejs
git push heroku master
基本上细节在更多信息链接 -
如果您删除或重命名之前导致自动检测应用程序类型的文件,从而在您的应用程序中自动设置检测到的buildpack,也可能出现这种情况。
答案 3 :(得分:2)
如果您正在分支机构,则需要设置master来跟踪分支
git branch -f --track master origin/branch_name
检查master中的package.json
git show master:package.json
如果可用,请再次尝试。
git push heroku master
`
答案 4 :(得分:1)
对其他答案的一些细微澄清: 错误“无法检测到set 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”(或您想要的语言)手动指定buildpack。这应解决与buildpack检测相关的大多数错误。
答案 5 :(得分:1)
我遇到了同样的问题并尝试了所有方法,最终意识到没有文件可以提交,因为它们已经提交并推送到github仓库中。 因此,您需要执行以下操作:
rm -rf .git
git init
git add。
git commit -m“提交名称”
heroku创建
git push heroku master
这对我有用。
答案 6 :(得分:0)
大多数应用程序至少存在其中一个签名,因此如果您看到此错误,通常意味着未将重要文件签入您的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