为什么 Heroku 无法检测到 Node.js buildpack?

Why does Heroku fail to detect Node.js buildpack?

我 git 克隆了一个 Node.js 应用程序(package.json 中指定的版本是 4.1.2 而我的本地计算机的版本是 6.2.2)和试图 git 推动 Heroku。但它未能构建并出现此错误:

Failed to detect 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 即使我设置了也检测不到的可能原因是什么?

这意味着 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 文件以验证是否有可用于构建的节点应用程序。

我遇到了类似的问题,这是解决问题的步骤。

heroku buildpacks:set heroku/nodejs
git push heroku master

基本都在more info里link -


如果您删除或重命名之前导致自动检测您的应用程序类型并因此在您的应用程序上自动设置检测到的 buildpack 的文件,也可能会发生这种情况。


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

Heroku 使用 buildpacks 来 select 如何处理 ap。您要清除该节点关联:

buildpacks:clear # clear all buildpacks set on the app

意思是“下个版本会正常检测buildpack”,应该可以帮你解决。

参考:https://devcenter.heroku.com/articles/buildpacks

对其他答案的一些小说明: 错误 "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 成功了。

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

如果你在一个分支上工作,你需要设置master来跟踪你的分支

git branch -f --track master origin/branch_name

在 master

中检查 package.json

git show master:package.json

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

git push heroku master

`

大多数应用程序至少存在这些签名之一,因此如果您看到此错误,通常意味着重要文件未签入您的 git 存储库:

  • Java: pom.xml

  • Ruby: 宝石文件

  • 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

我 运行 遇到同样的问题并尝试了所有方法,最终意识到没有文件会提交,因为它们已经提交并推送到 github 存储库。 因此,您需要执行以下操作:

  • 删除旧的 git。文件夹:

rm -rf .git

  • 新建git:

git init

  • 添加所有项目文件:

git add .

  • 提交:

git commit -m “commit name”

  • 创建新的 heroku 应用程序:

heroku create

  • 推送代码给高手:

git push heroku master

这对我有用。

我添加Pakage.json个文件,然后

删除旧的 git。文件夹: rm -rf .git

新建git: git 初始化

添加所有项目文件: git 添加 .

提交: git commit -m “提交名称”

创建新的 heroku 应用程序: heroku 创建

推送代码掌握: git 推送 heroku 大师

应用已成功部署到 heroku。