# node.js – nvm keeps “forgetting” node in new terminal session

## The Question :

577 people think this question is useful

## Upon using a new terminal session in OS X, nvm forgets the node version and defaults to nothing:

$nvm ls:  .nvm v0.11.12 v0.11.13  I have to keep hitting nvm use v.0.11.13 in every session:  .nvm v0.11.12 -> v0.11.13  I’ve tried both the brew install, as well as the official installation script. My .profile for the brew version: #nvm export NVM_DIR=~/.nvm source$(brew --prefix nvm)/nvm.sh



And for the install.sh script:

$curl https://raw.githubusercontent.com/creationix/nvm/v0.10.0/install.sh | bash #nvm export NVM_DIR="/Users/farhad/.nvm" [ -s "$NVM_DIR/nvm.sh" ] &amp;&amp; . "$NVM_DIR/nvm.sh" # This loads nvm  ## Any clue to what I’m doing wrong? The Question Comments : • Just want to add this here – Make sure you export from .bash_profile and not your .bashrc ## The Answer 1 1239 people think this answer is useful Try nvm alias default. For example: $ nvm alias default 0.12.7

This sets the default node version in your shell. Then verify that the change persists by closing the shell window, opening a new one, then: node --version

87 people think this answer is useful

Alias to node itself to avoid updating the default alias along with node version updates later on.

nvm alias default node



42 people think this answer is useful

To install the latest stable version:

nvm install stable



To set default to the stable version (instead of a specific version):

nvm alias default stable



To list installed versions:

nvm list



As of v6.2.0, it will look something like:

$nvm list v4.4.2 -> v6.2.0 default -> stable (-> v6.2.0) node -> stable (-> v6.2.0) (default) stable -> 6.2 (-> v6.2.0) (default) iojs -> N/A (default)  ## The Answer 4 36 people think this answer is useful In my case, another program had added PATH changes to .bashrc If the other program changed the PATH after nvm’s initialisation, then nvm’s PATH changes would be forgotten, and we would get the system node on our PATH (or no node). The solution was to move the nvm setup to the bottom of .bashrc ### BAD .bashrc ### # NVM initialisation export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] &amp;&amp; \. "$NVM_DIR/nvm.sh"  # This loads nvm

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"



Solution:

### GOOD .bashrc ###

# Some other program adding to the PATH:
export PATH="$ANT_ROOT:$PATH"

# NVM initialisation
export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] &amp;&amp; \. "$NVM_DIR/nvm.sh" # This loads nvm  (This was with bash 4.2.46 on CentOS. It seems to me like a bug in bash, but I may be mistaken.) ## The Answer 5 27 people think this answer is useful nvm does its job by changing the PATH variable, so you need to make sure you aren’t somehow changing your PATH to something else after sourcing the nvm.sh script. In my case, nvm.sh was being called in .bashrc but then the PATH variable was getting updated in .bash_profile which caused my session to find the system node before the nvm node. ## The Answer 6 11 people think this answer is useful The top rated solutions didn’t seem to work for me. My solution is below: 1. Uninstall nvm completely using homebrew:brew uninstall nvm 2. Reinstall brew install nvm 3. In Terminal, follow the steps below(these are also listed when installing nvm via homebrew): mkdir ~/.nvm cp$(brew –prefix nvm)/nvm-exec ~/.nvm/ export NVM_DIR=~/.nvm source $(brew –prefix nvm)/nvm.sh The steps outlined above will add NVM’s working directory to your$HOME path, copy nvm-exec to NVM’s working directory and add to $HOME/.bashrc,$HOME/.zshrc, or your shell’s equivalent configuration file.(again taken from whats listed on an NVM install using homebrew)

7 people think this answer is useful

If you have tried everything still no luck you can try this :_

1 -> Uninstall NVM

rm -rf ~/.nvm



2 -> Remove npm dependencies by following this

3 -> Install NVM

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.33.11/install.sh | bash



4 -> Set ~/.bash_profile configuration

Run sudo nano ~/.bash_profile

Copy and paste following this

export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] &amp;&amp; \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] &amp;&amp; \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion  5 -> CONTROL + X save the changes 6 -> Run . ~/.bash_profile 7 -> Now you should have nvm installed on your machine, to install node run nvm install v7.8.0 this will be default node version or you can install any version of node ## The Answer 8 6 people think this answer is useful This question has mentioned for the OSX, but it happened to me in my linux OS. I tried using nvm alias default <version> but for each new terminal session the used node version was forgotten. so, here is the solution that i figured out. make sure to set a default alias for node version,put the following code in .bashrc, and source .bashrc. export NVM_DIR="/home/bonnie/.nvm" ## If the file exists and is not empty if [ -s "$NVM_DIR/nvm.sh" ]; then
## Source it
source "$NVM_DIR/nvm.sh" fi NODE_DEFAULT_VERSION=$(<"$NVM_DIR/alias/default") export PATH="$NVM_DIR/versions/node/$NODE_DEFAULT_VERSION/bin":$PATH



4 people think this answer is useful

Doing nvm install 10.14, for example, will nvm use that version for the current shell session but it will not always set it as the default for future sessions as you would expect. The node version you get in a new shell session is determined by nvm alias default. Confusingly, nvm install will only set the default alias if it is not already set. To get the expected behaviour, do this:

nvm alias default ''; nvm install 10.14



This will ensure that that version is downloaded, use it for the current session and set it as the default for future sessions.

3 people think this answer is useful

run this after you installed any version,

n=$(which node);n=${n%/bin/node}; chmod -R 755 $n/bin/*; sudo cp -r$n/{bin,lib,share} /usr/local



This command is copying whatever version of node you have active via nvm into the /usr/local/ directory and setting the permissions so that all users can access them.

3 people think this answer is useful

I have found a new way here. Using n Interactively Manage Your Node.js helps.

3 people think this answer is useful

I’m using ZSH so I had to modify ~/.zshrc with the lines concerning NVM in that order:

[ -s "$NVM_DIR/nvm.sh" ] &amp;&amp; . "$NVM_DIR/nvm.sh" # This loads nvm
source ~/.nvm/nvm.sh



2 people think this answer is useful

I was facing the same issue while using the integrated terminal in VS Code editor. Restarting VS Code after changing the node version using nvm fixed the issue for me.

1 people think this answer is useful

If you also have SDKMAN…

Somehow SDKMAN was conflicting with my NVM. If you’re at your wits end with this and still can’t figure it out, I just fixed it by ignoring the “THIS MUST BE AT THE END OF THE FILE…” from SDKMAN and putting the NVM lines after it.

#THIS MUST BE AT THE END OF THE FILE FOR SDKMAN TO WORK!!!
export SDKMAN_DIR="/Users/myname/.sdkman"
[[ -s "/Users/myname/.sdkman/bin/sdkman-init.sh" ]] &amp;&amp; source "/Users/myname/.sdkman/bin/sdkman-init.sh"

export NVM_DIR="$HOME/.nvm" [ -s "$NVM_DIR/nvm.sh" ] &amp;&amp; \. "$NVM_DIR/nvm.sh" # This loads nvm [ -s "$NVM_DIR/bash_completion" ] &amp;&amp; \. "$NVM_DIR/bash_completion" # This loads nvm bash_completion  ## The Answer 15 1 people think this answer is useful $ nvm alias default {NODE_VERSION}



when we use the above command, only update the node version but the npm still uses the old version.

Here is another solution for update the both node and npm, in my case i want to use node 8.9.4 and i have used the below command.

$nvm use default 8.9.4  And the command returns the output. Now using node v8.9.4 (npm v5.6.0) ## The Answer 16 1 people think this answer is useful # Here is a simple instruction: 1) Install: nvm install 8.10.0  2) Use once per terminal nvm use 8.10.0  3) Set up as default for all terminals nvm alias default 8.10.0  You may need to use root permissions to perform those actions. And don’t forget to check nvm documentation for more info. Also note that you may need to specify node version for your IDE: ## The Answer 17 -2 people think this answer is useful Also in case you had node installed before nvm check in your ~/.bash_profile to not have something like : export PATH=/bin:/sbin:/usr/bin:/usr/local/sbin:/usr/local/bin:$PATH



If you do have it, comment/remove it and nvm should start handling the default node version.