Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

How do I make Heroku use node 14.x instead of 12.x?

Tags:

node.js

heroku

I need Heroku to use NodeJS 14 instead of 12, how do I do that? On my computer I'm using Node 14, and I'm defining it in engines on package.json (at the root of my repo):

{
  "engines": {
    "node": "14.x"
  }
  ...
}

I have both the heorku/nodejs as well as the heroku/rails buildpack installed because this is a Ruby on Rails apps with webpack:

enter image description here

But when running my tests is Heroku, I get this error:

Error: Missing binding /app/node_modules/node-sass/vendor/linux-x64-72/binding.node
Node Sass could not find a binding for your current environment: Linux 64-bit with Node.js 12.x
Found bindings for the following environments:
  - Linux 64-bit with Unsupported runtime (88)

If I workaround the problem in the CI, I still run into trouble when deploying:

-----> Installing node-v12.16.2-linux-x64
-----> Installing yarn-v1.22.4
-----> Detecting rake tasks
-----> Preparing app for Rails asset pipeline
       Running: rake assets:precompile
       yarn install v1.22.4
       [1/5] Validating package.json...
       error [email protected]: The engine "node" is incompatible with this module. Expected version "14.x". Got "12.16.2"
       error Found incompatible module.
       info Visit https://yarnpkg.com/en/docs/cli/install for documentation about this command.
like image 857
pupeno Avatar asked Mar 02 '21 18:03

pupeno


People also ask

What version of Node is Heroku using?

Node. js default version is now 16. x | Heroku Dev Center.

How do I update Nodejs version?

Just go to the official Node. js site (nodejs.org), download and execute the installer program. It will take care of everything and with a few clicks of 'Next' you'll get the latest Node. js version running on your machine.


Video Answer


1 Answers

In the documentation it says:

If you need a specific version of node for your Ruby application you should use multiple buildpacks to first install node then install Ruby.

which means if you deployed a Rails application, you need to remove all buildpacks and then re-add them in the correct order, first heroku/node and then heroku/rails.

like image 90
Glen Costigan Avatar answered Sep 30 '22 14:09

Glen Costigan