Switching between Node versions during development
Tags: node
Published: 2019-07-08 20:24:16

---
title: Switching between Node versions during development
published: true
tags: node
canonical_url: https://blog.logrocket.com/switching-between-node-versions-during-development/
---

![](https://thepracticaldev.s3.amazonaws.com/i/3jegxmmdvigxx39pus24.jpg)

Sometimes it seems like there are new versions of Node.js released almost weekly — minor versions every few weeks, major versions every few months. If you are a developer that needs to switch between different applications and projects on a regular basis, you may find you need to run different versions of Node.

Luckily, there are several decent ways to install multiple versions and switch as needed. This article will discuss and compare two popular Node version managers: **NVM for Windows** and the **n Node version manager** for Linux/Mac.

> Tip: Different NVM implementations exist for Windows and Linux/Mac; however, the n npm package is only supported on Linux/Mac.

For comparison purposes, let’s pretend that you are working on two applications. Application 1 is an Angular 5 app running on Node 6.17.1. Application 2 is an Angular 7 app running on Node 8.16.0. Here is what you need to accomplish:

- Fix bug _x_ on Application 1
- Upgrade Application 2 to Angular 8

You are actually going to need three versions of Node to complete your tasks since the Angular 8 upgrade will require you upgrade Application 2 to Node 10.9 or greater.

[![LogRocket Free Trial Banner](https://i0.wp.com/blog.logrocket.com/wp-content/uploads/2017/03/f760c-1gpjapknnuyhu8esa3z0jga.png?resize=1200%2C280&ssl=1)](https://logrocket.com/signup/)

## NVM for Windows

Technically, there are two completely separate NVM projects that offer similar capabilities on different operating systems but are maintained independent of each other:

- [nvm-sh/nvm](https://github.com/nvm-sh/nvm) is a bash script that can be used to manage Node versions on Linux and Mac
- [coreybutler/nvm-windows](https://github.com/coreybutler/nvm-windows/tree/1.1.7) is a Windows application (with or without an installer) that can be used to managed Node versions on Windows

This article focuses on NVM for Windows.

### Installation

Installation is as simple as downloading the NVM for Windows installer from the latest release on GitHub. At the time of writing, [1.1.7 (Aug. 2018)](https://github.com/coreybutler/nvm-windows/releases) is the latest release. Download and extract `nvm-setup.zip` and double-click to the executable to install.

The installer will place NVM in an appropriate folder on your machine and update your system environment variables so that `nvm` and future installations of `node` are available on the command line.

> Tip: If you prefer to install to your own folder, download `nvm-noinstall.zip` and extract it wherever you would like. Run the included `install.cmd` to set up necessary system environment variables.

> Tip: Detailed installation instructions are available [on GitHub](https://github.com/coreybutler/nvm-windows).

Once installation is complete, open a command window and confirm NVM is available:

```jsx
D:\>nvm version
1.1.7
```

### Getting Application 1 running

If you recall, you need to work on two different applications with three different versions of Node to complete all of your tasks. Start by getting Application 1 running first. Some command output has been truncated (`...`) to save space.
```jsx
D:\>nvm list available
|   CURRENT    |     LTS      |  OLD STABLE  | OLD UNSTABLE |
|--------------|--------------|--------------|--------------|
|    12.4.0    |   10.16.0    |   0.12.18    |   0.11.16    |
...
D:\>nvm install 6.17.1
Downloading node.js version 6.17.1 (64-bit)...
Complete
Creating C:\Users\Brian\Downloads\nvm-noinstall\temp

Downloading npm version 3.10.10... Complete
Installing npm v3.10.10...

Installation complete. If you want to use this version, type

nvm use 6.17.1
D:\>nvm use 6.17.1
D:\>nvm list
  * 6.17.1 (Currently using 64-bit executable)    
D:\>node -v
v6.17.1
D:\>cd application1
D:\application1>npm install
...
D:\application1>npm start
> application1@0.0.0 start D:\application1
> ng serve

** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
...
```
Here are some of NVM’s key capabilities that you just took advantage of to get the application running:

- `nvm list available` provided a convenient partial list of Node versions available to be installed
- `nvm install` installed the required Node version (a 64-bit version by default since the current system’s architecture is 64-bit)
- `nvm use` activated the version that was just installed
- `nvm list` confirmed that the correct version of Node was installed and activated (other installed versions would be listed if they existed)

Once Node is installed and activated, then it is business as usual. You can follow whatever Node/npm workflow your application requires.

> Tip: Your Node versions are completely isolated from each other. For example, if you install a package globally on one version of Node, that package won’t be available on other Node versions.

### Getting Application 2 running

So you have fixed bug _x_ in Application 1, and now you are ready to tackle upgrading Application 2 to Angular 8:
```jsx
D:\nvm install 8.16.0
...
D:>nvm use 8.16.0
Now using node v8.16.0 (64-bit)
D:>cd application2
D:\application2>npm install
...
D:\application2>npm start
...
D:\application2>nvm install 10.16.0
...
D:\application2>nvm use 10.16.0
Now using node v10.16.0 (64-bit)
D:\application2>npm i -g @angular/cli@8
...
D:\application2>ng update @angular/cli @angular/core
...
D:\application2>npm install
...
D:\application2>npm start
...
```
With the help of NVM (and Angular CLI), you made quick work of the upgrade with a few commands:

- `nvm install` and `nvm use` installed and activated v8.16.0 so that you could verify that the application worked as expected before the upgrade
- `nvm install` and `nvm use` installed and activated v10.16.0 in preparation for the upgrade
- Globally installed the `@angular/cli` package to get access to the `ng update` command that automatically upgrades Angular applications
- `npm install` and `npm start` to test the newly upgraded application

## n Node version manager

The n Node version manager provides a simpler CLI for installing and switching between Node versions. It is only supported on Linux or Mac operating systems.

> Tip: Detailed installation and usage instructions are available in the [tj/n repository on GitHub](https://github.com/tj/n).

### Installation

If you have a version of Node and npm installed already, you can install n just like any other NPM package using `npm install -g n`.

If you don’t already have a version of Node or npm installed, you can install n with a bash script from GitHub. Here is what it looks like:

> Tip: You must have Git installed to install n with the bash script.
```jsx
~$ curl -L https://git.io/n-install | bash
...
=== n successfully installed.
  The active Node.js version is: v10.16.0

  Run `n -h` for help.
  To update n later, run `n-update`.
  To uninstall, run `n-uninstall`.

  IMPORTANT: OPEN A NEW TERMINAL TAB/WINDOW or run `. /home/brian/.bashrc`
             before using n and Node.js.
===
~$ . /home/brian/.bashrc
~$ n
node/10.16.0
```
n is installed by downloading and running the `n-install` script from GitHub. After installation, running n demonstrates that a version of Node is installed by default.

### Getting Application 1 running

Application 1 requires Node v6.17.1, so you need to install that first, then run the app.
```jsx
~$ n 6.17.1
     install : node-v6.17.1
       mkdir : /home/brian/n/n/versions/node/6.17.1
       fetch : https://nodejs.org/dist/v6.17.1/node-v6.17.1-linux-x64.tar.gz
####################################################################################################################################### 100.0%
installed : v6.17.1
~$ node -v
v6.17.1
~$ cd application1
~/application1$ npm install
...
~/application1$ npm start
> application1@0.0.0 start ~/application1
> ng serve

** Angular Live Development Server is listening on localhost:4200, open your browser on http://localhost:4200/ **
...
```
The n command for installing and activating a version of Node is simple: `n 6.17.1`. You could also use `n latest` for the latest version of Node or `n lts` for the latest LTS version of Node. If the version of Node is already installed, then n will simply switch to that version.

After installing Node, the application can be run as usual.

> Tip: Similar to NVM, Node versions are completely isolated from each other. For example, globally installed packages are not shared between Node versions.

### Getting Application 2 running

Next up, you need to get Application 2 running and proceed with the Angular 8 upgrade:
```jsx
$ n 8.16.0
...
$ cd application2
~/application2$ npm install
...
~/application2$ npm start
...
~/application2$ n 10.16.0
...
~/application2$ npm i -g @angular/cli@8
...
~/application2$ ng update @angular/cli @angular/core
...
~/application2$ npm install
...
~/application2$ npm start
...
```
Node v8.16.0 was installed to make sure Application 2 is working prior to the upgrade. Then, Node v10.16.0 is installed as required by Angular 8. The Angular CLI is installed globally, and the application is updated with `ng update`. Finally, the application is started to test after the upgrade.

You might have noticed that n makes it slightly quicker to install and switch to new versions of Node with a single `n <version>` command.

### Using a Node binary directly

n offers the ability to invoke a specific Node binary directly without having to explicitly switch to that Node version. NVM does not have a similar capability.
```jsx
~$ echo "console.log('Node version: ' + process.version)" > index.js
~$ node -v
v8.16.0
~$ n use 10.16.0 index.js
Node version: v10.16.0
~$ n use 12.4.0 index.js
  Error: '12.4.0' is not installed
~$ node -v
v8.16.0
```
In the example above, the active version of Node is v8.16.0. When `n use 10.16.0 index.js` is run, the output indicates that the version of Node used to execute the script was 10.16.0. After execution, the active version of Node is still v8.16.0. Note that the `n use` command requires the requested version of Node to be installed by n already.

This capability can be useful in certain situations. For example, think of a build server used to build different apps with their own required Node versions. Each build could be triggered with the `n use` command, specifying the required Node version for that application.

## Summary comparison

NVM for Windows and n have many common features and some unique features that affect how and where you use each tool. Here is a summary of some of the key differences:

<table class="table-top-header" data-ace-table-col-widths="364;205;169">
<tbody>
<tr>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class="ace-all-bold-hthree"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z"><b>Capability</b></span></span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class="ace-all-bold-hthree"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z"><b>NVM for Windows</b></span></span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class="ace-all-bold-hthree"><span class="inline-code author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z"><b>n</b></span></span></div>
</td>
</tr>
<tr>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Installation</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Windows installer or standalone installation</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Bash script or&nbsp;</span></div>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">npm package</span></div>
</td>
</tr>
<tr>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Operating system support</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Windows</span></div>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z starts-with-lparen ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">(different implementation for Linux/Mac is available)</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Linux/Mac only</span></div>
</td>
</tr>
<tr>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">List available versions of Node to install?</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Yes</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">No</span></div>
</td>
</tr>
<tr>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">List installed versions of Node?</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Yes</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Yes</span></div>
</td>
</tr>
<tr>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Install and switch between different Node versions?</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Yes</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Yes</span></div>
</td>
</tr>
<tr>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Access Node binary directly?</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">No</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Yes</span></div>
</td>
</tr>
<tr>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Choose which architecture</span> <span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z h-lparen">(x86,</span><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z"> x64) to install?</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Yes</span></div>
</td>
<td>
<div class="ace-line gutter-author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z ace-ltr" dir="auto"><span class=" author-d-1gg9uz65z1iz85zgdz68zmqkz84zo2qoxwz83zyz76z1260c9dlz70zz88zorz84zz68zpiollz76zz74zz88zz72z2z67zsz78z">Yes</span></div>
</td>
</tr>
</tbody>
</table> 

You may choose to use n on your Linux box because of its simple API. Or maybe you choose NVM for Windows on your Windows box and n on your Linux build server, and you use n on your Linux build server to manage Node versions between different build jobs.

Whatever the situation may be, both of these tools do a fantastic job of fulfilling the need to be able to switch Node versions on the fly. Happy Node version switching!

* * *

## Plug: [LogRocket](https://logrocket.com/signup/), a DVR for web apps

[![LogRocket Dashboard Free Trial Banner](https://i2.wp.com/blog.logrocket.com/wp-content/uploads/2017/03/1d0cd-1s_rmyo6nbrasp-xtvbaxfg.png?resize=1200%2C677&ssl=1)](https://logrocket.com/signup/)

[LogRocket](https://logrocket.com/signup/) is a frontend logging tool that lets you replay problems as if they happened in your own browser. Instead of guessing why errors happen, or asking users for screenshots and log dumps, LogRocket lets you replay the session to quickly understand what went wrong. It works perfectly with any app, regardless of framework, and has plugins to log additional context from Redux, Vuex, and @ngrx/store.

In addition to logging Redux actions and state, LogRocket records console logs, JavaScript errors, stacktraces, network requests/responses with headers + bodies, browser metadata, and custom logs. It also instruments the DOM to record the HTML and CSS on the page, recreating pixel-perfect videos of even the most complex single-page apps.

[Try it for free](https://logrocket.com/signup/).

* * *

The post [Switching between Node versions during development](https://blog.logrocket.com/switching-between-node-versions-during-development/) appeared first on [LogRocket Blog](https://blog.logrocket.com).