How to use multiple Node.js versions on a computer

Updated: December 29, 2023 By: Guest Contributor Post a comment

As developers, we might encounter scenarios where we need to switch between different versions of Node.js to manage compatibility for various projects. This is a common necessity for various workflows and contributes to an efficient development process. Below are three solutions to manage and switch between multiple Node.js versions on a single computer.

NVM (Node Version Manager)

Node Version Manager (NVM) is a popular tool specifically designed to manage multiple Node.js versions. It allows you to easily switch between versions and handle version-specific dependencies with flexibility.

Implementation Steps:

  1. Firstly, install NVM by running the appropriate installer script from its GitHub repository.
  2. Once NVM is installed, you can install any version of Node.js by using the command nvm install .
  3. After installing the desired versions, you can switch between them using nvm use .
  4. To list all installed Node.js versions, use the command nvm ls.
  5. Setting a default Node.js version can be done with nvm alias default .

Code Example:

# Install a specific version of Node nvm install 14.17.0 
# Use the installed version nvm use 14.17.0 
# List all versions installed nvm ls 

Pros:

  • Allows for easy switching between Node.js versions.
  • Maintains separate npm packages per Node.js version, preventing conflicts.
  • NVM is platform-independent with versions for Unix, macOS, and Windows (nvm-windows).

Cons:

  • Limited to bash-like shells on Unix-like systems; on Windows, an alternative such as nvm-windows must be used.
  • Can be slower because it changes the PATH settings for each session.

N (Version manager ‘ n ’)

‘n’ is another version manager for Node.js. It swiftly switches Node.js versions without utilizing subshells or having to alter PATH settings, simplifying the process.

Implementation Steps:

  1. Install ‘n’ globally via npm with the command npm install -g n.
  2. Install the Node.js versions you need with n .
  3. Switch to a particular version by simply running the command n .
  4. To remove a version, use n rm .
  5. The command n ls lists all the available Node.js versions to switch to.

Code Example:

# Install and use a specific version of Node using ‘n’ npm install -g n n 14.17.0 
# Installing Node.js version 14.17.0 n 
# Switching versions is done by invoking ‘n’ and selecting the version

Pros:

  • Fast and straightforward approach to switch Node.js versions.
  • The simplicity of removing older/unwanted Node.js versions.
  • No worry about modifying PATH because ‘n’ handles it automatically.

Cons:

  • Lacks feature of installing io.js versions if that is still required.
  • No support for Windows natively; an alternative like ‘Windows Subsystem for Linux (WSL)’ must be used.

Docker Containers

Docker containers encapsulate a Node.js environment within a container, enabling you to run any version of Node.js within an isolated environment on any operating system that supports Docker.

Implementation Steps:

  1. First, install Docker on your machine from the official Docker website.
  2. Create a Dockerfile with the specific Node.js version.
  3. Build the Docker image using docker build -t my-node-app ..
  4. Run the container from the built image with docker run -it my-node-app.

Example

Create a Dockerfile with Node.js version 14.17.0:

# Use the official Node.js 14 image as a parent image
FROM node:14.17.0

# Create a directory to hold the application code inside the image
RUN mkdir /usr/src/app

# Set the working directory
WORKDIR /usr/src/app

# Copy the current directory contents into the container at /usr/src/app
COPY . .

# Install any needed packages specified in package.json
RUN npm install

# Define the command to run the app
CMD ["node", "app.js"]

To build and run your Docker image, use the following commands in your terminal (separate from the Dockerfile):

# Build the image
docker build -t my-node-app .

# Run the app in the container
docker run -it my-node-app

Remember, the Docker build and run commands should be executed in your terminal, not included in the Dockerfile itself. The Dockerfile should only contain the instructions to build the Docker image.

Pros:

  • Complete isolation of Node.js environment resulting in fewer conflicts.
  • It works on any system that supports Docker, offering greater compatibility across disparate environments.
  • Capability to match the production environment closely for development.

Cons:

  • Learning curve associated with understanding and using Docker.
  • Potentially higher resource utilization when compared to direct version management tools.

Conclusion

In conclusion, these three solutions — NVM, n, and Docker — provide different means to accomplish the same goal: managing and running multiple Node.js versions on a single machine. NVM and n focus specifically on Node.js version management in the development environment, making them an easy choice for developers. Where Docker, offering containerization, is an all-encompassing solution that might simulate production environments more precisely, giving it a broader application use. Ultimately, the choice depends on personal preferences, project requirements, and environment stability considerations.