Installing multiple Node.js instances with nvm

Normally, you wouldn’t install multiple versions of Node.js—doing so adds complexity to your system. But if you are hacking on Node.js itself or testing your software against different Node.js releases, you may want to have multiple Node.js installations. The method to do so is a simple variation on what we’ve already discussed.

Earlier, while discussing building Node.js from the source, we noted that you can install multiple Node.js instances in separate directories. It’s only necessary to build from the source if you need a customized Node.js build but most folks would be satisfied with pre-built Node.js binaries. They, too, can be installed on separate directories.

Switching between Node.js versions is simply a matter of changing the PATH variable (on POSIX systems), as in the following code, using the directory where you installed Node.js:

$ export PATH=/usr/local/node/VERSION-NUMBER/bin:${PATH} 

It starts to get a little tedious maintaining this after a while. For each release, you have to set up Node.js, npm, and any third-party modules you desire in your Node.js installation. Also, the command shown to change PATH is not quite optimal. Inventive programmers have created several version managers to simplify managing multiple Node.js/npm releases and provide commands to change PATH the smart way:

Node version manager: https://github.com/tj/n

Node version manager: https://github.com/creationix/nvm

Both maintain multiple, simultaneous versions of Node.js and let you easily switch between versions. Installation instructions are available on their respective websites.

For example, with nvm, you can run commands such as these:

$ nvm ls

v6.4.0

v6.11.2 v8.9.3 v10.15.2

… v12.13.1

… v14.0.0

-> system

default -> 12.9.1 (-> v12.9.1)

node -> stable (-> v12.13.1) (default)

stable -> 12.13 (-> v12.13.1) (default)

$ nvm use 10

Now using node v10.15.2 (npm v6.4.1)

$ node –version v10.15.2

$ nvm use 4.9

Now using node v4.9.1 (npm v2.15.11)

$ node –version v4.9.1

$ nvm install 14

Downloading and installing node v14.0.0…

Downloading

https://nodejs.org/dist/v14.0.0/node-v14.0.0-darwin-x64.tar.xz…

############……………. 100.0%

Computing checksum with shasum -a 256

Checksums matched!

Now using node v14.0.0 (npm v6.14.4)

$ node –version v14.0.0

$ which node

/Users/david/.nvm/versions/node/v14.0.0/bin/node

$ /usr/local/bin/node –version

v13.13.0

$ /opt/local/bin/node –version

v13.13.0

In this example, we first listed the available versions. Then, we demonstrated how to switch between Node.js versions, verifying the version changed each time. We also installed and used a new version using nvm. Finally, we showed the directory where nvm installs Node.js packages versus Node.js versions that are installed using MacPorts or Homebrew.

This demonstrates that you can have Node.js installed system-wide, keep multiple private Node.js versions managed by nvm, and switch between them as needed. When new Node.js versions are released, they are simple to install with nvm, even if the official package manager for your OS hasn’t yet updated its packages.

1. Installing nvm on Windows

Unfortunately, nvm doesn’t support Windows. Fortunately, a couple of Windows- specific clones of the nvm concept exist:

  • Node.js version management utility for Windows: https://github.com/coreybutler/nvm-windows
  • Natural Node.js and npm version manager for Windows: https://github.com/marcelklehr/nodist

Another route is to use WSL. Because in WSL you’re interacting with a Linux command line, you can use nvm itself. But let’s stay focused on what you can do in Windows.

Many of the examples in this book were tested using the nvm-windows application. There are slight behavior differences but it acts largely the same as nvm for Linux and macOS. The biggest change is the version number specifier in the nvm use and nvm install commands.

With nvm for Linux and macOS, you can type a simple version number, such as nvm use 8, and it will automatically substitute the latest release of the named Node.js version. With nvm-windows, the same command acts as if you typed nvm use 8.0.0. In other words, with nvm-windows, you must use the exact version number. Fortunately, the list of supported versions is easily available using the nvm list available command.

Using a tool such as nvm simplifies the process of testing a Node.js application against multiple Node.js versions.

Now that we can install Node.js, we need to make sure we are installing any Node.js module that we want to use. This requires having build tools installed on our computer.

Source: Herron David (2020), Node.js Web Development: Server-side web development made easy with Node 14 using practical examples, Packt Publishing.

Leave a Reply

Your email address will not be published. Required fields are marked *