Pablo Ezequiel Inchausti
Pablo Ezequiel Inchausti

Reputation: 20663

How can the default node version be set using NVM?

I have installed nvm (ubuntu with zsh shell) with two node version: v6.11.5 and v9.0.0 and the default version in nvm is the v9.0.0

Every time I need to change the node version

$ nvm list
         v6.11.5
->       v9.0.0
         system
default -> node (-> v9.0.0)
node -> stable (-> v9.0.0) (default)
stable -> 9.0 (-> v9.0.0) (default)


$ nvm v6

How could I change the nvm version default to define v6.11.5?

Upvotes: 1848

Views: 1699687

Answers (29)

Vaibhaw
Vaibhaw

Reputation: 21

Use this command to set a default Node.js version. For example, to set version 16 as the default, use: nvm alias default 16. You can replace 16 with any other version, such as 18, 20, or 22, depending on your needs.

Upvotes: 2

sweetnandha cse
sweetnandha cse

Reputation: 1011

If you want all projects and terminals to use the same Node.js version globally, nvm makes it simple to set a default version. Here's how:


1. Install the Latest Version (If Not Already Installed)

Install the latest stable version of Node.js using nvm:

nvm install node
or
nvm install [<version>]

2. Set the Global Default Version

Run the following command to set the latest version as the global default for all environments:

nvm alias default node
or
nvm alias default 23

3. Verify the Global Default

Close and reopen your terminal, then check the version to confirm:

node -v

This will show the default version being used across all sessions.


Why This Works:

By setting a default version with nvm alias default, every time you open a terminal, nvm will automatically load the specified version as the global default for all projects and scripts. You don’t need to manually switch versions anymore unless you explicitly want to.

Let me know if this clears up your concern!

Upvotes: 9

jcaron
jcaron

Reputation: 17720

Adding an answer for a specific case I stumbled upon today.

I had set the default version to use with nvm alias default <version> but a new shell still didn't point to the version of node I wanted.

It turns out that:

  • nvm manipulates $PATH to set the version to use.
  • The .bash_profile set by the admin reset $PATH to a fixed list of directories rather than adding to the existing.
  • As this happened after .bashrc and thus nvm were run, nvm correctly picked my default, but the $PATH was then reset.

Two possible solutions:

  • Fix the $PATH manipulation so that it doesn't clobber the existing $PATH
  • Or run nvm use default at the end of .bash_profile, after the $PATH manipulation, so that nvm can re-add the path to the correct version to $PATH

Hope that helps someone!

Upvotes: 2

cprcrack
cprcrack

Reputation: 19169

If you just want a major version as default this works:

% nvm alias default 20

To check your current default:

% nvm alias default
default -> 20 (-> v20.13.1)

Restart terminal to apply.

Upvotes: 92

wlf
wlf

Reputation: 3403

Whatever I tried, it did not use the version I specified, and running nvm current returned system.

What fixed it was moving the following line to the end of my .zshrc:

source ~/.nvm/nvm.sh

Upvotes: 3

Andi kp
Andi kp

Reputation: 31

I solved this issue with the next command:

nvm use set as default xx.xx.x

enter image description here

Upvotes: 3

Kyle Chadha
Kyle Chadha

Reputation: 4161

For those testing this in VSCode terminal and still seeing the old version even after killing/restarting terminal -- VS code caches the old version somehow. Close/reopen your full VSCode window and you should see the correct version with node -v.

Edit: I got curious about why this is case, and the best explanation I can come up with is that the vscode process must provide new shells with the $PATH variable it received when it was started. Because nvm works by updating your $PATH, new shells in vscode do not reflect those changes, and a full restart is required

Upvotes: 54

NVT_CR7
NVT_CR7

Reputation: 349

enter image description here

If your node version (node -v) is => 16.17.0, then run nvm alias default 20.9.0 to have node -v => 20.9.0

Upvotes: 24

Ankur Marwaha
Ankur Marwaha

Reputation: 1885

For me the issue was, my nvm was not set every time I open a new terminal. Once I got rid of this issue, default node version was also being set fine.

After the nvm was intializing on startup of new terminal, the node version was being initialized to the default set via nvm.Here

Upvotes: 1

Imtiaz Sakib
Imtiaz Sakib

Reputation: 1849

I was trying to change the default version from a VSCode terminal on a Mac. Didnt work. I had to run this from the default system terminal.

nvm alias default v16.16.0

Upvotes: 77

Cameron Tacklind
Cameron Tacklind

Reputation: 7234

While NVM has its uses, I encourage you to consider an alternate option.

You can pin you project to a particular version of Node.js using the node package on Npm!

cd oldProject

npm i node@6.11.5

cd ../newProject

npm i node@9.0.0

Next time Npm runs node, it will use that version!

The node package accomplishes this by downloading the specified version of Node.js to node_modules/.bin/node. You you can run it directly, but it is easier to let Npm run it.

Any package.json#scripts will automatically use the specified version of node since node_modules/.bin is added to the path by Npm.

No more remembering which version of Node this package uses. No need to run anything new - just make sure npm i has been run.

{
  "scripts": {
    "node-version": "node --version"
  },
  "dependencies": {
    "node": "9.0.0"
  }
}

Note, you will need to npm install once before the correct node is used:

node --version
# v18.12.0
npm run node-version
# v18.12.0
npm install
npm run node-version
# v9.0.0
node --version
# v18.12.0
node_modules/.bin/node --version
# v9.0.0

Upvotes: -6

tianjianchn
tianjianchn

Reputation: 731

Since there are a lot of answers above that talk about the default alias, and someone still can't get the right version in new terminal, my answer is here.

while you add source $NVM_DIR/nvm.sh in your shell rc file(like ~/.bashrc), it will first check whether there is a nvm-version node path in the $PATH environment variable, like /usr/local/nvm/versions/node/v14.1.0/bin. If there is one, nvm will not use default alias.

So firstly you should check why there is node path in $PATH. If you could get the reason(like run nvm use 16 explicitly in another rc file or script file), just remove it.

If you can't get reason or just wanna keep it, then another solution is:

# that's your previous usage, keep it
source $NVM_DIR/nvm.sh

# FORCE to use default alias
nvm use default

# or if you prefer to forcedly use .nvmrc prior to default, then
test -f .nvmrc && nvm use || nvm use default

Upvotes: 11

riordant
riordant

Reputation: 98

FYI looks like tmux caches the old version also (like mentioned with VSCode above). restarting tmux then uses the new version for each window.

Upvotes: 1

LJHarb
LJHarb

Reputation: 39614

(nvm maintainer here)

nvm alias default 6.11.5 if you want it pegged to that specific version.

You can also do nvm alias default 16 or nvm alias default node.

Either way, you'll want to upgrade to the latest version of nvm (v0.39.2 as of this writing)

# nvm set default node.js version 16.14.2
$ nvm alias default 16.14.2
$ nvm use

$ node -v
# v16.14.2

Upvotes: 3642

Chester Chu
Chester Chu

Reputation: 445

In my situation of Windows 11, nvm 1.1.9 and using gitbash

These work for me (have to run as administrator)

[lastest version]

nvm use latest

[specific version]

nvm use 18.10.0

These didn't work for me

nvm use 18 -> return node vv18.10.0 (64-bit) is not installed or cannot be found.

nvm use default 18 -> return Unrecognized version: "default"

nvm alias ... -> seems alias command is not supported in this nvm version

Hope it will help :)

Upvotes: 1

okwyvic
okwyvic

Reputation: 597

This is what works for me.

nvm use default v16

This did not do anything for me

nvm alias default v16

Upvotes: 52

dolar
dolar

Reputation: 1785

In Nutshell steps to use NVM

For Mac

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.39.1/install.sh | bash
nvm install 16
nvm use 16
nvm alias default 16
npm install npm --global # Upgrade npm to the latest version

For Linux

sudo apt install curl git
curl -sL https://deb.nodesource.com/setup_16.x | sudo -E bash -
sudo apt install nodejs

For Windows

Git's installer for Windows from below link

https://git-scm.com/download/win

node-v16.XX.XX-x64.msi from below link

https://nodejs.org/dist/latest-v16.x/

Upvotes: 22

Tejesh Palagiri
Tejesh Palagiri

Reputation: 851

If you want to switch only for once use this

nvm use 12.x

Else if you want to switch the default node version then use

nvm use default 12.x 

or

nvm alias default 12.x

Upvotes: 79

Swaroop Maddu
Swaroop Maddu

Reputation: 4874

First check available versions

nvm list

Then set default version using

nvm alias default lts/**

enter image description here

Upvotes: 11

Maxime
Maxime

Reputation: 729

I did something like that after running a nvm install --lts:

nvm alias default 'lts/*'

Upvotes: 18

Sirawich voungchuy
Sirawich voungchuy

Reputation: 352

nvm alias default 16 (where "16" is the version you want to use) but if you're install node from https://nodejs.org/en/download/ before I would suggest you remove it first. For m1 or m1 pro chips, I suggest you follow this solution: https://www.youtube.com/watch?v=fULL8QiPEU4

Upvotes: 7

Benos
Benos

Reputation: 696

Change the default version to use the latest LTS version nvm alias default lts/*

You manually upgrade the global version by doing nvm install lts/* --reinstall-packages-from=lts/* or a weekly cron job if you want to keep your version up to date

The --reinstall-packages-from=lts/* is there to reinstall the global packages you had everytime you change versions

Upvotes: 5

Ingun전인건
Ingun전인건

Reputation: 782

I tried the most-upvoted answer and didn’t work for me. The problem was that I had another node installed by brew which NVM recognizes as system-node. NVM prioritizes system-node over default alias. All I had to was to uninstall the system-node (brew uninstall node).

Upvotes: 18

Rishabh Barman
Rishabh Barman

Reputation: 569

Alert: This answer is for MacOS only

Let suppose you have 2 versions of nodeJS inside your nvm, namely v13.10.1 & v15.4.0

And, v15.4.0 is default

> nvm list
       v13.10.1
->      v15.4.0
         system
default -> 15.4.0 (-> v15.4.0)

And, you want to switch the default to v13.10.1

Follow these steps on your Mac terminal:

  1. Run the command:

    nvm alias default 13.10.1

This will make the default point to v13.10.1 as...

default -> 13.10.1 (-> v13.10.1)
  1. Open new instance of terminal. Now check the node version here as...

node -v

You will get...

v13.10.1
  1. nvm list will also show the new default version.

    nvm list

Just an info: The NodeJS versions taken as example above will have their different npm versions. You can cross-verify it in terminal by running npm -v

Upvotes: 24

Paul Weber
Paul Weber

Reputation: 6688

The current answers did not solve the problem for me, because I had node installed in /usr/bin/node and /usr/local/bin/node - so the system always resolved these first, and ignored the nvm version.

I solved the issue by moving the existing versions to /usr/bin/node-system and /usr/local/bin/node-system

Then I had no node command anymore, until I used nvm use :(

I solved this issue by creating a symlink to the version that would be installed by nvm.

sudo mv /usr/local/bin/node /usr/local/bin/node-system    
sudo mv /usr/bin/node /usr/bin/node-system 
nvm use node
  Now using node v12.20.1 (npm v6.14.10)
which node
  /home/paul/.nvm/versions/node/v12.20.1/bin/node
sudo ln -s /home/paul/.nvm/versions/node/v12.20.1/bin/node /usr/bin/node

Then open a new shell

node -v
  v12.20.1

Upvotes: 7

August Gong
August Gong

Reputation: 411

You can also like this:

$ nvm alias default lts/fermium

Upvotes: 34

yutoliho
yutoliho

Reputation: 177

change the default node version with nvm alias default 10.15.3 *

(replace mine version with your default version number)

you can check your default lists with nvm list

Upvotes: 2

alltozall20381
alltozall20381

Reputation: 2095

This will set the default to be the most current version of node

nvm alias default node

and then you'll need to run

nvm use default

or exit and open a new tab

Upvotes: 205

Dipesh Yadav
Dipesh Yadav

Reputation: 2847

Lets say to want to make default version as 10.19.0.

nvm alias default v10.19.0

But it will give following error

! WARNING: Version 'v10.19.0' does not exist.
default -> v10.19.0 (-> N/A)

In That case you need to run two commands in the following order

# Install the version that you would like 
nvm install 10.19.0

# Set 10.19.0 (or another version) as default
nvm alias default 10.19.0

Upvotes: 226

Related Questions