我用git克隆了一个Node.js应用程序(在package.json
中指定的版本是4.1.2
,而我的本地机器的版本是6.2.2
),并尝试在Heroku上使用git push,但它无法构建,并给出了以下错误:
无法检测设置构建包https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz
现在我将构建包设置为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构建包,也无法检测到它的可能原因是什么?
8条答案
按热度按时间np8igboo1#
这意味着
package.json
文件没有签入到git项目的根目录中,所以Heroku检测到它不是Node.js应用。要修复这个问题,你需要确保在项目的根目录下有一个package.json(那里也有一个.git目录),然后把它添加到git:
措辞('failed to detect set buildpack')可以改进。它可能应该说'failed to detect Node.js app'。当运行buildpack的“detect”脚本(https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect)时,它会查找package.json文件以验证是否有节点应用可供构建。
shstlldc2#
这是因为Heroku认为您正在部署一个Node应用程序,但您正在部署的是Node应用程序的**
public
目录**,而不是Node代码。Heroku使用构建包来选择如何处理应用。您要清除该节点关联:
heroku buildpacks:clear # clear all buildpacks set on the app
这意味着"下一个版本将正常检测构建包",这应该可以为您解决这个问题。
参考:https://devcenter.heroku.com/articles/buildpacks
gz5pxeao3#
我有类似的问题,这里是解决问题的步骤。
基本上细节在更多信息链接-
如果删除或重命名以前导致自动检测应用程序类型并因此自动设置应用程序上检测到的生成包的文件,也可能发生这种情况。
unftdfkk4#
如果您正在处理分支,则需要设置master来跟踪分支
第一个月
检查master中的package.json
git show master:package.json
如果可用,请尝试再次推送。
git push heroku master
'
7rfyedvj5#
关于其他答案的一些小澄清:错误“Failed to detect set buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz“或类似的错误,意味着您试图推送到heroku的GIT COMMIT未被检测为node.js应用(注意大写字母的细微之处)。
我最近犯了一个愚蠢的错误,让我意识到这一点:运行“ls -a”显示我的package.json和.git文件在同一个根目录下,正如heroku所要求的那样,除了package.json文件没有包含在我最近的git提交中。运行“git status”提醒我package.json是一个未跟踪的文件。所以我添加了它,然后ta-da,推送到heroku成功了。
如果你得到一个与构建包相关的错误,检查你的GIT COMMIT在根目录下是否有package.json文件,如果是这样,尝试用“heroku buildpacks:set heroku/nodejs”(或者你想要的语言)手动指定构建包,这应该可以解决大多数与构建包检测相关的错误。
kxxlusnw6#
大多数应用至少有一个这样的签名,所以如果你看到这个错误,通常意味着一个重要的文件没有签入到你的git仓库:
您应该:
sauutmhj7#
我遇到了同样的问题,尝试了所有方法,最终发现没有文件可以提交,因为它们已经被提交并推送到了github存储库。
rm-射频git
git初始化
git添加。
git commit-m "提交名称"
黑鹿创造
git push英雄大师
这对我很有效。
ws51t4hk8#
添加Pakage.json文件,然后
删除旧的git.文件夹:rm-射频git
创建新git:git初始化
添加所有项目文件:git添加。
提交:git commit-m "提交名称"
创建新的heroku应用程序:黑鹿创造
将代码推送到主机:git push英雄大师
应用程序已成功部署在heroku上。