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

新手上路,请多包涵

我 git 克隆了一个 Node.js 应用程序(在 package.json 中指定的版本是 4.1.2 并且我的本地机器的版本是 6.2.2 )赫罗库。但它未能构建并给出此错误:

无法检测到 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 也没有被检测到,可能的原因是什么?

原文由 Shree 发布,翻译遵循 CC BY-SA 4.0 许可协议

阅读 505
2 个回答

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

措辞(’未能检测到集合 buildpack’)可以改进。它可能应该说“未能检测到 Node.js 应用程序”。当 buildpack 的“检测”脚本运行时( https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect ),它会寻找一个 package.json 文件来验证是否有一个节点应用程序可用于构建。

原文由 hunterloftis 发布,翻译遵循 CC BY-SA 3.0 许可协议

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

Heroku 使用 buildpacks 来选择 ap 的处理方式。您想清除该节点关联:

buildpacks:clear # clear all buildpacks set on the app

这意味着“Next release will detect buildpack normally.”,这应该可以为您解决。

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

原文由 Scott 发布,翻译遵循 CC BY-SA 3.0 许可协议

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题