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

Shr*_*ree 26 git heroku git-clone node.js buildpack

我GIT克隆了的Node.js应用程序(在指定的版本package.json之中4.1.2,而我的本地机器存在的6.2.2),并试图与git在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.
Run Code Online (Sandbox Code Playgroud)

现在,当我跑步时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.
Run Code Online (Sandbox Code Playgroud)

即使我设置了Node.js buildpack也未被检测到的可能原因是什么?

hun*_*tis 31

这意味着package.json文件未被检入git项目的根目录,因此Heroku检测到它不是Node.js应用程序.你可以在本地看到:

git show master:package.json
Run Code Online (Sandbox Code Playgroud)

要修复它,你需要确保项目根目录中有一个package.json(还有一个.git目录),并将它添加到git:

git add package.json
git commit -m 'track package.json'
Run Code Online (Sandbox Code Playgroud)

可以改进措辞('未能检测到set buildpack').应该说'未能检测到Node.js app'.运行buildpack的"detect"脚本(https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect)时,它会查找package.json文件以验证是否存在节点应用程序可以建立.

  • 是 - package.json必须位于项目的根目录中. (2认同)

Sco*_*ott 10

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

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

buildpacks:clear # clear all buildpacks set on the app

这意味着"下一个版本将正常检测buildpack.",这应该为您解决.

ref:https://devcenter.heroku.com/articles/buildpacks


Pan*_*wad 5

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

heroku buildpacks:set heroku/nodejs
git push heroku master
Run Code Online (Sandbox Code Playgroud)

基本上详细信息在更多信息链接中 -


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