You’re Installing Node.js Wrong. That’s OK, Here Is How To Fix It 🙌

I have always either installed Node from the installer provided by the Nodejs website or, via Brew in macOS. I have also used nvm in the past but did not know that there was a best practice to guide us.

I learned about the best practice when studying for the Nodejs Application Certification exam through the Linux Foundation. As it turns out, using a Node.js version manager is recommended. On Linux, macOS, and when using Windows Subsystem for Linux (WSL) nvm is your tool of choice. If you are not using WSL, you can use nvm-windows, nodist, or nvs on Windows.

Why a Node version manager?

Package managers tend to lag behind the faster Node.js release cycle.
Additionally, the placement of binary and config files and folders isn’t standardized across OS package managers and can cause compatibility issues.

Most importantly:

When installing Node.js via an OS package manager, installing global modules with Node’s module installer (npm) tends to require the use of sudo (a command that grants root privileges) on non-Windows systems. This is not a good security practice.
As mentioned you can also install it via the installer provided by the Nodejs website, but again, on macOS and Linux, it predicates the use of sudo for installing global libraries.

NOTE: The package manager the first three refer to is not the Node.js installer downloaded from the website, but native package managers such as apt-get on Linux.

It is therefore recommended to use the tools I mentioned earlier. Also, once either of these tools is installed, your developer experience will get a nice boost.

NOTE: Before using either of the tools though, it is also recommended to uninstall any currently installed Nodejs versions on your machine.

Using nvm

With all existing versions of Node.js removed from your computer, let’s reinstall Node.js using nvm. The first step is to install nvm on your machine. To test whether nvm installed successfully, run the following command in your terminal:

nvm -v # it should output something like 0.39.7

To see all currently installed Node.js versions run the following which might seem familiar to some:

nvm ls

Right now, this should not output anything. If you run the following, you will see a LOT of output. This is all of the version of Node.js that is available to install.

nvm ls-remote

Below is a subsection of the output:

v20.8.1
v20.9.0 (LTS: Iron)
v20.10.0 (LTS: Iron)
v20.11.0 (LTS: Iron)
v20.11.1 (Latest LTS: Iron)
v21.0.0
v21.1.0
v21.2.0
v21.3.0
v21.4.0
v21.5.0
v21.6.0
-> v21.6.1
v21.6.2
v21.7.0
v21.7.1

The arrow indicates the currently active version. In my case, it is Node.js version v21.6.2.

To install a specific version, you can use the following command:

nvm install 18.16.0

# If you want to install the latest version of a specific major version you can do
nvm install 19

To install the latest stable release, you can use the following command:

nvm install node

Here node is an alias for the latest stable version. Once you have installed the various versions of Nodejs you may need, you can switch to either of these using the following command:

nvm use <version>

# alternatively you can use the following the use the latest version installed on your system
nvm use node

When switching, nvm will output the version you just switched to. If you are ever uncertain of th current Nodejs version, you can use the following command to see the current version:

node -v

While nvm ls-remote will show all the available version of Nodejs, nvm ls will show the versions you have installed, and highlight the current active version. By default the first version of Nodejs you install will be set as your default. This means that anytime you start a new shell, nvm will switch to the default version. If the default is not the one you want, you can explicitly set the default as follows:

nvm alias default <version>|node

# for example
nvm alias default 20

To uninstall a specific version, use the following command:

nvm uninstall 15

And that is it! You can now install, uninstall and switch between the various versions of Nodejs easily and safely.

Leave a Reply

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