Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Why does Heroku fail to detect Node.js buildpack?

I git cloned a Node.js application (the version specified in the package.json being 4.1.2 and that of my local machine being 6.2.2) and tried to git push on Heroku. But it failed to build and gave this error:

Failed to detect set buildpack https://codon-buildpacks.s3.amazonaws.com/buildpacks/heroku/nodejs.tgz

Now I set the buildpack to heroku/nodejs and I get this message:

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. 

Now when I run git push heroku master, I am again told:

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. 

What could be the possible reasons for the Node.js buildpack not being detected even if I set it?

like image 291
Shree Avatar asked Jul 29 '16 11:07

Shree


People also ask

How do I select a Buildpack in Heroku?

You can change the buildpack used by an application by setting the buildpack value. When the application is next pushed, the new buildpack will be used. $ heroku buildpacks:set heroku/php Buildpack set. Next release on random-app-1234 will use heroku/php.

How does Heroku detect Buildpacks?

Buildpacks are composed of a set of scripts that will perform tasks such as retrieve dependencies or output generated assets or compiled code. If you are using a language that is officially supported by the Heroku platform, the build system will automatically detect which Heroku Buildpack is needed for the job.

Does Heroku support node 18?

js release schedule below, Heroku's currently supported Node. js versions are 14. x , 16. x , and 18.


1 Answers

This means that a package.json file isn't checked into the root of your git project, so Heroku is detecting that it isn't a Node.js app. You can see this locally:

git show master:package.json 

To fix it, you'll want to be sure there is a package.json in the root of your project (where there is also a .git directory), and add it to git:

git add package.json git commit -m 'track package.json' 

The phrasing ('failed to detect set buildpack') could be improved. It should probably say 'failed to detect Node.js app'. When the buildpack's "detect" script is run (https://github.com/heroku/heroku-buildpack-nodejs/blob/master/bin/detect), it looks for a package.json file to verify that there's a node app available to build.

like image 148
hunterloftis Avatar answered Sep 24 '22 18:09

hunterloftis