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

uxh89sit  于 2023-01-01  发布在  Node.js
关注(0)|答案(8)|浏览(157)

我用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构建包,也无法检测到它的可能原因是什么?

np8igboo

np8igboo1#

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

措辞('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文件以验证是否有节点应用可供构建。

shstlldc

shstlldc2#

这是因为Heroku认为您正在部署一个Node应用程序,但您正在部署的是Node应用程序的**public目录**,而不是Node代码。
Heroku使用构建包来选择如何处理应用。您要清除该节点关联:
heroku buildpacks:clear # clear all buildpacks set on the app
这意味着"下一个版本将正常检测构建包",这应该可以为您解决这个问题。
参考:https://devcenter.heroku.com/articles/buildpacks

gz5pxeao

gz5pxeao3#

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

heroku buildpacks:set heroku/nodejs
git push heroku master

基本上细节在更多信息链接-
如果删除或重命名以前导致自动检测应用程序类型并因此自动设置应用程序上检测到的生成包的文件,也可能发生这种情况。

unftdfkk

unftdfkk4#

如果您正在处理分支,则需要设置master来跟踪分支
第一个月
检查master中的package.json
git show master:package.json
如果可用,请尝试再次推送。
git push heroku master
'

7rfyedvj

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”(或者你想要的语言)手动指定构建包,这应该可以解决大多数与构建包检测相关的错误。

kxxlusnw

kxxlusnw6#

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

  • Java:pom.xml文件
  • Ruby:宝石文件
  • Node.js:包. json
  • Python:要求文件setup.py/管道文件
  • PHP:文件系统扩展

您应该:

git add {file}
git commit -am 'added {file} 
git push heroku master
sauutmhj

sauutmhj7#

我遇到了同样的问题,尝试了所有方法,最终发现没有文件可以提交,因为它们已经被提交并推送到了github存储库。

  • 删除旧的git.文件夹:

rm-射频git

  • 创建新git:

git初始化

  • 添加所有项目文件:

git添加。

  • 承诺:

git commit-m "提交名称"

  • 创建新的heroku应用程序:

黑鹿创造

  • 将代码推送到主机:

git push英雄大师
这对我很有效。

ws51t4hk

ws51t4hk8#

添加Pakage.json文件,然后
删除旧的git.文件夹:rm-射频git
创建新git:git初始化
添加所有项目文件:git添加。
提交:git commit-m "提交名称"
创建新的heroku应用程序:黑鹿创造
将代码推送到主机:git push英雄大师
应用程序已成功部署在heroku上。

相关问题