Reputation: 20663
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
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
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:
Install the latest stable version of Node.js using nvm
:
nvm install node
or
nvm install [<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
Close and reopen your terminal, then check the version to confirm:
node -v
This will show the default version being used across all sessions.
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
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..bash_profile
set by the admin reset $PATH
to a fixed list of directories rather than adding to the existing..bashrc
and thus nvm
were run, nvm
correctly picked my default, but the $PATH
was then reset.Two possible solutions:
$PATH
manipulation so that it doesn't clobber the existing $PATH
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
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
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
Reputation: 31
I solved this issue with the next command:
nvm use set as default xx.xx.x
Upvotes: 3
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
Reputation: 349
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
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
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
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
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
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
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
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
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
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
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
Reputation: 4874
First check available versions
nvm list
Then set default version using
nvm alias default lts/**
Upvotes: 11
Reputation: 729
I did something like that after running a nvm install --lts
:
nvm alias default 'lts/*'
Upvotes: 18
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
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
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
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:
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)
node -v
You will get...
v13.10.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
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
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
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
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