I am on a linux (ubuntu) machine, just getting started with nvm. (removed all prior installations of node, npm, and n)
$ nvm install stable
Downloading https://nodejs.org/dist/v6.1.0/node-v6.1.0-linux-x64.tar.xz...
######################################################################## 100.0%
nvm is not compatible with the npm config "prefix" option: currently set to "/home/dominic/Github/dominicbarnes/dotfiles/nvm/versions/node/v6.1.0"
Run `nvm use --delete-prefix v6.1.0` to unset it.
I've seen this documented around in the readme, and I read the related tickets. However, I did not set any custom prefix at any point. The instructions it gives work for the time, but the error shows right back up for each new terminal session.
I suspect this is because I don't have any version of node/npm installed at the system level, so whatever is trying to look for the broken prefix value may be getting unexpected behavior, but I'm not sure. _(see next comment below, I think I've ruled this out)_
The prefix option that nvm reports to me appears to be generated on it's own, as I don't have a $PREFIX or $NPM_CONFIG_PREFIX option anywhere in my env. (nor is there a profile=... in my ~/.npmrc)
I installed node globally on my system, hoping it would fix my issue. Alas, it did not, so I proceeded to figure out what the npm config looks like:
$ npm config get prefix
/usr
This appears to be some sort of default, as it is not in the env, my npmrc or anywhere else I control.
Since the above description assumes that node/npm isn't installed prior to nvm install ..., I don't think this is entirely relevant. (but I wanted to rule out my lack of a global node/npm installation as a factor)
I was running on the master, so I figured I would rule that out as the source of my error too. I checked out v0.31.0 (the latest release as far as I can tell) to see if that fixes it, but I get the same error.
What does nvm debug print out?
How did you install your system node? npm config get prefix should always have a default value, but /usr shouldn't be it.
What happens if you run nvm use --delete-prefix v6.1.0 and then which npm && npm config get prefix?
I installed node via nodesource
$ nvm debug
nvm --version: v0.31.0
$SHELL: /bin/bash
$HOME: /home/dominic
$NVM_DIR: '$HOME/.dotfiles/nvm'
$PREFIX: ''
$NPM_CONFIG_PREFIX: ''
nvm current: system
which node: /usr/bin/node
which iojs:
which npm: /usr/bin/npm
npm config get prefix: /usr
npm root -g: /usr/lib/node_modules
However, my original intent was to do w/o the global node, so when I uninstall and re-run nvm debug:
$ nvm debug
nvm --version: v0.31.0
$SHELL: /bin/bash
$HOME: /home/dominic
$NVM_DIR: '$HOME/.dotfiles/nvm'
$PREFIX: ''
$NPM_CONFIG_PREFIX: ''
nvm current: none
which node:
which iojs:
which npm:
npm config get prefix: The program 'npm' is currently not installed. You can install it by typing:
sudo apt-get install npm
npm root -g: The program 'npm' is currently not installed. You can install it by typing:
sudo apt-get install npm
And as for those other steps:
$ nvm install 6
Downloading https://nodejs.org/dist/v6.1.0/node-v6.1.0-linux-x64.tar.xz...
######################################################################## 100.0%
nvm is not compatible with the npm config "prefix" option: currently set to "/home/dominic/Github/dominicbarnes/dotfiles/nvm/versions/node/v6.1.0"
Run `nvm use --delete-prefix v6.1.0` to unset it.
$ nvm use --delete-prefix v6.1.0
Now using node v6.1.0 (npm v3.8.6)
$ which npm
/home/dominic/.dotfiles/nvm/versions/node/v6.1.0/bin/npm
$ npm config get prefix
/home/dominic/Github/dominicbarnes/dotfiles/nvm/versions/node/v6.1.0
It looks to me as if the npm being installed by nvm is what is reporting the prefix the way it is.
aha, i suspect the issue might be capitalization - ie, Github vs github. Is your filesystem case-insensitive, or case-sensitive?
My fs is case-sensitive, and Github is correct.
I wonder if this has to do with symlinks? My ~/.dotfiles is a symlink to ~/Github/dominicbarnes/dotfiles, in case some sort of link indirection is causing issues here.
In my bashrc, I'm using:
source ~/.dotfiles/nvm/nvm.sh
I'll try using the longer path that isn't behind a symlink to see if that makes a difference.
Well, it turns out that using:
source ~/Github/dominicbarnes/dotfiles/nvm/nvm.sh`
Then it works, so it appears like there is a problem with "sourcing" it in a directory that is behind a symlink. I think that would be considered a bug, but not sure how best to address it.
Ah. Yes, that's the problem. nvm does not currently work with symlinks. (related, #617 and https://github.com/creationix/nvm/issues/1031#issuecomment-194044829)
Oddly enough, this error has shown back up for me on OSX. (despite the fact that I'm not using a symlink, which fixed the error on linux)
@dominicbarnes can you file a separate issue for your new OS X problem, including nvm debug output?
@dominicbarnes can you link the OS X version of this problem? I am having the same issue. Thanks.
Same problem.
$ sw_vers
ProductName: Mac OS X
ProductVersion: 10.11.6
BuildVersion: 15G31
$ nvm debug
nvm --version: v0.32.1
$SHELL: /bin/zsh
$HOME: /Users/x208032
$NVM_DIR: '/usr/local/opt/nvm'
$PREFIX: ''
$NPM_CONFIG_PREFIX: ''
nvm current: v7.1.0
which node: $NVM_DIR/versions/node/v7.1.0/bin/node
which iojs: iojs not found
which npm: $NVM_DIR/versions/node/v7.1.0/bin/npm
npm config get prefix: /usr/local/Cellar/nvm/0.32.1/versions/node/v7.1.0
npm root -g: /usr/local/Cellar/nvm/0.32.1/versions/node/v7.1.0/lib/node_modules
@p4ali nvm is not supported via homebrew (as the homebrew formula indicates). brew uninstall nvm, and then properly install nvm with the curl script in the readme, and your problem should go away.
I am having exactly the same issue:
I installed nvm through the install script:
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.32.1/install.sh | bash
The below lines are properly added into my bash_profile
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
After that I installed the LTS version (v6.9.2) through nvm:
nvm install --lts
Getting this message:

So, in order to use node I have to run nvm use --delete-prefix v6.9.2, which will work for the current terminal session. However, reopening the terminal makes running node -v to output
-bash: node: command not found, so I have to repeat that command over and over per terminal session prior to any node interaction.
This is how my nvm debug looks when I launch a new bash terminal:
nvm --version: v0.32.1
$SHELL: /bin/bash
$HOME: /Users/Rauliyohmc
$NVM_DIR: '$HOME/.nvm'
$PREFIX: ''
$NPM_CONFIG_PREFIX: ''
nvm current: none
which node:
which iojs:
which npm:
npm config get prefix: -bash: npm: command not found
npm root -g: -bash: npm: command not found
And after I run nvm use --delete-prefix v6.9.2:
nvm --version: v0.32.1
$SHELL: /bin/bash
$HOME: /Users/Rauliyohmc
$NVM_DIR: '$HOME/.nvm'
$PREFIX: ''
$NPM_CONFIG_PREFIX: ''
nvm current: v6.9.2
which node: $NVM_DIR/versions/node/v6.9.2/bin/node
which iojs:
which npm: $NVM_DIR/versions/node/v6.9.2/bin/npm
npm config get prefix: /Users/rauliyohmc/.nvm/versions/node/v6.9.2
npm root -g: /Users/rauliyohmc/.nvm/versions/node/v6.9.2/lib/node_modules
@rauliyohmc it's likely because $HOME has Rauliyohmc, and npm config get prefix is reporting rauliyohmc. One possible fix is to lowercase your username - are you on a case-insensitive filesystem?
That was it @ljharb, thanks a lot 馃
I was having the same issue trying to 'purify' my node versions, since I had noticed my 'system' version was pretty old (0.10.x). After uninstalling all version, reinstalling nvm and using it to install now, I was getting the prefix errors.
Doesn't get to the root of the issue, but a fix that worked for me was to install node from the package at nodejs.org. The prefix error goes away for me if nvm ls shows a 'system' version installed:
$ nvm ls
v7.3.0
-> system
default -> system
node -> stable (-> v7.3.0) (default)
stable -> 7.3 (-> v7.3.0) (default)
iojs -> N/A (default)
lts/* -> lts/boron (-> N/A)
lts/argon -> v4.7.0 (-> N/A)
lts/boron -> v6.9.2 (-> N/A)
@alanguir what's your nvm debug print out? You're saying if you uninstall your system version, the prefix error will go away?
My system is Ubuntu 16.04, zsh, oh-my-zsh, with zsh-nvm and npm plugins. Node is installed via umake.
I was getting this error. Deleted my $NVM_DIR, exited my terminal, restarted it, and let the zsh-nvm plugin re-add it (from this repo). Now no error. Now instead of sad and confused, I'm happy and confused.
Im getting this error after following the same process @rauliyohmc did about removing the prefix
This is my nvm debug
nvm --version: v0.33.2
$SHELL: /bin/bash
$HOME: /root
$NVM_DIR: '$HOME/.nvm'
$PREFIX: ''
$NPM_CONFIG_PREFIX: ''
$NVM_NODEJS_ORG_MIRROR: ''
$NVM_IOJS_ORG_MIRROR: ''
shell version: 'GNU bash, version 4.2.37(1)-release (i686-pc-linux-gnu)'
uname -a: 'Linux 4.9.15-x86_64-linode81 #1 SMP Fri Mar 17 09:47:36 EDT 2017 x86_64 x86_64 x86_64 GNU/Linux'
OS version: Ubuntu 12.10
curl: /usr/bin/curl, curl 7.27.0 (i686-pc-linux-gnu) libcurl/7.27.0 OpenSSL/1.0.1c zlib/1.2.7 libidn/1.25 librtmp/2.3
wget: /usr/bin/wget, GNU Wget 1.13.4 built on linux-gnu.
git: /usr/bin/git, git version 1.7.10.4
nvm current: system
which node: /usr/local/bin/node
which iojs:
which npm: /usr/local/bin/npm
npm config get prefix: /usr/bin/env: node: No such file or directory
npm root -g: /usr/bin/env: node: No such file or directory
@adim86 any chance that you're using a symlink for $HOME or $NVM_DIR, or that you have a case-insensitive filesystem?
No I did not do a symlink between$HOME and the NVM_DIR.
One thing though is that I am on Ubuntu VPS and I think that is case sensitive. What would be the solution if that is the issue?
case-sensitive should be fine. if it's case-insensitive, ensure that the casing of $HOME and $NVM_DIR and whoami all are consistent.
I had this issue for the past week, and I finally sat down and took two hours to fix this. Here is what worked for me:
First of all, I wanted to keep the global node modules. So I ran npm ls -g --depth 0 to list all the main once for reinstallation. Just copy and paste the list to a text editor.
Then it was about removing all traces of NVM, Node, and NPM:
brew uninstall node;
brew prune;
sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}
sudo rm -f /usr/local/bin/npm /usr/local/lib/dtrace/node.d;
rm -rf ~/.nvm
rm -rf ~/.npm
Then I used https://github.com/lukechilds/zsh-nvm to install NVM again (I am using Oh-My-ZSH).
Next step, installing the latest Node version that I wanted nvm install --lts and followed by that I set the default nvm alias default and then installed my global packages again.
I finally have a system that's working again and not nagging me about this damn PREFIX thing 馃憤 .
Most helpful comment
I had this issue for the past week, and I finally sat down and took two hours to fix this. Here is what worked for me:
First of all, I wanted to keep the global node modules. So I ran
npm ls -g --depth 0to list all the main once for reinstallation. Just copy and paste the list to a text editor.Then it was about removing all traces of NVM, Node, and NPM:
Then I used https://github.com/lukechilds/zsh-nvm to install NVM again (I am using Oh-My-ZSH).
Next step, installing the latest Node version that I wanted
nvm install --ltsand followed by that I set the defaultnvm alias defaultand then installed my global packages again.I finally have a system that's working again and not nagging me about this damn PREFIX thing 馃憤 .