Reputation: 14056
I am trying to run another NodeJS version with nvm
but getting this error:
$ nvm use v4.2.4
nvm is not compatible with the npm config "prefix" option:
currently set to "/Users/z/.npm-global"
Run `npm config delete prefix` or `nvm use --delete-prefix v4.2.4` to unset it.
I have my prefix set on purpose to avoid sudo npm
(see https://docs.npmjs.com/getting-started/fixing-npm-permissions).
Is there any way I can use nvm
without losing my prefix for globally installed packages?
Upvotes: 308
Views: 213455
Reputation: 16025
Following sh file helped my case
# nvmish.sh
unset npm_config_prefix
source $HOME/.nvm/nvm.sh
nvm use 18
Upvotes: 1
Reputation: 741
There are just two commands to resolve this issue. Some users may also be getting the error as soon as they are also opening the terminal. The first thing they see is this error:
nvm is not compatible with the npm config "prefix" option:
currently set to "/Users/z/.npm-global"
Run npm config delete prefix
or nvm use --delete-prefix v4.2.4
to unset it.
So to resolve this issue, Run the following two commands. Note: Change the version number as the same they are showing in your error.
$ npm config delete prefix
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1
Note: This will also work if your terminal is using zsh.
Upvotes: 5
Reputation: 898
Here is what I did and worked for me
1- sudo su
2-root@antonio:/home/antonio# mv ~/.nvm /tmp/
3- root@antonio:/home/antonio# export NVM_DIR="/tmp/.nvm"
4- root@antonio:/home/antonio# nvm use --delete-prefix v17.4.0
5- `root@antonio:/home/antonio# node -v
Upvotes: 0
Reputation: 723
I faced the same issue, This is because of conflicting the npm of node and nodejs
so remove nodejs by below commands
sudo apt-get remove nodejs
this will remove all nodejs related Packages,
after the above command, you have to run autoremove command just like that
sudo apt autoremove
this will solve the problem,
Upvotes: 0
Reputation: 154
For me I removed the lines
NPM_PACKAGES="${HOME}/.npm-packages"
PATH="$NPM_PACKAGES/bin:$PATH"
From my .bashrc
and was able to run npm install -g package-name
without needing sudo
permissions or having the error message appear in my shell window.
Upvotes: 0
Reputation: 81
For those who first installed node via homebrew and then added nvm to a system.
If you see noisy message : nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local
you may need to delete the node_modules and node itself, the solution was perfectly described above^^, but below is simple way.
Since brew automatically added env var to .bash_profile, each time bash loaded path points to the originally installed version.
1.Go to ./.bash_profile 2. Comment on line which points to node, like so #export PATH="/usr/local/opt/node@10/bin:$PATH"
next time bash should load node which is installed by nvm, make sure bash_profile contains nvm dir export NVM_DIR="/Users/{your_user_name}/.nvm"
Upvotes: 1
Reputation: 3889
I've tried every answer in this thread but none worked. Reinstalling nvm
as documented https://github.com/nvm-sh/nvm with curl
fixed my problem.
Upvotes: 2
Reputation: 1240
I have the same error message but other solution. The autogenerated path during curl (install.sh) does not match. Check this with:
echo $NVM_DIR
In my case: /var/www//.nvm
. Show in your auto generated bash file and change it and replace it: (~/.bash_profile, ~/.zshrc, ~/.profile, or ~/.bashrc)
replace
export NVM_DIR="$HOME/.nvm"
with (e.g.)
export NVM_DIR="$HOME.nvm"
Upvotes: 7
Reputation: 470
This error can occur when your NVM installation folder path has a Symbolic Link.
The default installation path of NVM is: $HOME/.nvm
but your home folder could be a symbolic link for another drive, like my case.
Example, my home folder is a Symbolic Link to aother drive:
/home/myuser -> /bigdrive/myuser
This cause the prefix problem.
On your startup script (.bashrc or .zshrc or other), change the NVM folder to the direct path.
Ex: NVM_DIR="/bigdrive/myuser/.nvm"
.
.bashrc
export NVM_DIR="/bigdrive/myuser/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
Upvotes: 37
Reputation: 407
I solved this problem when it was showing on VSCode and JetBrains Terminals, but not in the native terminal using the following commands:
ls -la /usr/local/bin | grep "np[mx]"
This will give you the resolved path at the end:
... npm -> ../lib/node_modules/npm/bin/npm-cli.js
... npx -> ../lib/node_modules/npm/bin/npx-cli.js
From there, removing the files and relaunching VS Code should fix the issue:
rm -R /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js
rm -R /usr/local/bin/npx /usr/local/lib/node_modules/npm/bin/npx-cli.js
fix link: https://github.com/nvm-sh/nvm/issues/1690#issuecomment-392014774
Upvotes: 3
Reputation: 409
Let me describe my situation.
First, check the current config
$ nvm use --delete-prefix v10.7.0
$ npm config list
Then, I found the error config in output:
; project config /mnt/c/Users/paul/.npmrc
prefix = "/mnt/c/Users/paul/C:\\Program Files\\nodejs"
So, I deleted the C:\\Program Files\\nodejs
in /mnt/c/Users/paul/.npmrc.
Upvotes: 1
Reputation: 18019
I followed https://stackoverflow.com/a/47861348/2391795 answer but it didn't work out well.
$ npm config delete prefix
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1
After running the recommended commands my nvm didn't work anymore, running nvm use
would display the proper node version being used, but running node -v
would show another. It wasn't possible to change node's version anymore.
I uninstalled and reinstalled nvm entirely to fix it. I followed https://github.com/creationix/nvm#manual-uninstall by running
$ rm -rf "$NVM_DIR"
Then edited my .zshrc
to remove the lines related to nvm, which in my case were
export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh" # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"
Then started a new shell (so that nvm isn't loaded in this new shell) and ran https://github.com/creationix/nvm#install-script
curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash
Which added nvm the lines I previously had removed in my .zshrc
.
Then I was able to use nvm as I used to. I guess that's an odd case were things went wrong and forced me to reinstall everything, doesn't look like most people go through this due to this issue.
Upvotes: 1
Reputation: 5246
I had the same problem and executing npm config delete prefix
did not help me.
But this did:
After installing nvm using brew, create ~/.nvm
directory:
$ mkdir ~/.nvm
and add following lines into ~/.bash_profile
:
export NVM_DIR=~/.nvm
. $(brew --prefix nvm)/nvm.sh
(Check that you have no other nvm related command in any ~/.bashrc
or ~/.profile
or ~/.bash_profile
)
Open a new terminal and this time it should not print any warning message.
Check that nvm is working by executing nvm --version
command.
After that, install/reinstall NodeJS using nvm install node && nvm alias default node
.
More Info
I installed nvm
using homebrew
and after that I got this notification:
Please note that upstream has asked us to make explicit managing nvm via Homebrew is unsupported by them and you should check any problems against the standard nvm install method prior to reporting.
You should create NVM's working directory if it doesn't exist:
mkdir ~/.nvm
Add the following to
~/.bash_profile
or your desired shell configuration file:export NVM_DIR=~/.nvm . $(brew --prefix nvm)/nvm.sh
You can set
$NVM_DIR
to any location, but leaving it unchanged from/usr/local/Cellar/nvm/0.31.0
will destroy any nvm-installed Node installations upon upgrade/reinstall.
Ignoring it brought me to this error message:
nvm
is not compatible with thenpm config
"prefix" option: currently set to"/usr/local/Cellar/nvm/0.31.0/versions/node/v5.7.1"
Runnvm use --delete-prefix v5.7.1 --silent
to unset it.
I followed an earlier guide (from homebrew/nvm
) and after that I found that I needed to reinstall NodeJS. So I did:
nvm install node && nvm alias default node
and it was fixed.
Update: Using brew to install NVM causes slow startup of the Terminal. You can follow this instruction to resolve it.
Upvotes: 85
Reputation: 31959
$ npm config delete prefix
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1
Note: Change the version number with the one indicated in the error message.
nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local" Run "npm config delete prefix" or "nvm use --delete-prefix v6.11.1 --silent" to unset it.
Credits to @gabfiocchi on Github - "You need to overwrite nvm prefix"
Upvotes: 538
Reputation: 427
This may be a conflict with your local installation of Node (if you had it installed via another way than NVM in the past). You should delete this instance of node:
sudo rm -rf /usr/local/lib/node_modules
sudo rm /usr/local/bin/node
cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm
After you cant install nvm
Upvotes: 41
Reputation: 51
I just have a idea. Use the symbolic link to solve the error and you can still use your prefix for globally installed packages.
ln -s [your prefix path] [path in the '~/.nvm']
then you will have a symbolic folder in the ~/.nvm
folder, but in fact, your global packages are still installed in [your prefix path]. Then the error will not show again and you can use nvm use **
normally.
ps: it's worked for me on mac
.
pps: do not forget to set $PATH
to your npm bin
folder to use the globally installed packages.
Upvotes: 0
Reputation: 8083
Just resolved the issue. I symlinked $HOME/.nvm
to $DEV_ZONE/env/node/nvm
directory. I was facing same issue. I replaced NVM_DIR
in $HOME/.zshrc
as follows
export NVM_DIR="$DEV_ZONE/env/node/nvm"
BTW, please install NVM using curl
or wget
command not by using brew
. For more please check the comment in this issue on Github: 855#issuecomment-146115434
Upvotes: 0
Reputation: 6948
I ran into this while using node installed via nvm
, with nvm
installed via homebrew. I solved it by running brew uninstall nvm
, rm -rf $NVM_DIR
, then reinstalling nvm using the official install script and reinstalling the node version I needed.
Note: I also had $NVM_DIR
mounted and symlinked. I moved it back into my homedir.
Upvotes: 13
Reputation: 27447
I had this issue after moving my home folder to a new drive on linux. It was fixed by removing .nvm folder and reinstalling nvm
Upvotes: 0
Reputation: 1537
It might be the problem if you have your home directory mounted somewhere, due nvm does not work properly with symlinks. Because I don't care where is my $NVM_DIR located I run this and all works fine:
$ mv ~/.nvm /tmp/
$ export NVM_DIR="/tmp/.nvm"
$ nvm use --delete-prefix v6.9.1
Upvotes: 10
Reputation: 1
Note:
to remove, delete, or uninstall nvm - just remove the $NVM_DIR
folder (usually ~/.nvm
)
you can try :
rm -rf ~/.nvm
Upvotes: -3
Reputation: 1263
I had the same problem and it was really annoying each time with the terminal. I run the command to the terminal and it was fixed
For those try to remove nvm from brew
it may not be enough to just brew uninstall nvm
if you see npm prefix is still /usr/local, run this command
sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}
Upvotes: 7
Reputation: 1
I was looking for a solution for the nvm prefix problem a found this question(before finding the solution). Here is my shell "dialog". I hope, it can be usefull for somebody. I was able to set to prefix with the help of this post: https://github.com/npm/npm/issues/6592
When I tried npm config delete prefix
or nvm use --delete-prefix
before using npm --prefix="" set prefix ""
, I got only:
npm ERR! not ok code 0
Note that you will have to repeat the same procedure with every node version, the prefix is set back to (in my case) /usr/local after installation.
$ nvm install 0.10
######################################################################## 100.0%
nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
Run `npm config delete prefix` or `nvm use --delete-prefix v0.10.44` to unset it.
$ npm --prefix="" set prefix ""
$ nvm use 0.10.44
nvm is not compatible with the npm config "prefix" option: currently set to "/home/john"
Run `npm config delete prefix` or `nvm use --delete-prefix v0.10.44` to unset it.
$ nvm use --delete-prefix v0.10.44
Now using node v0.10.44 (npm v1.3.10)
$ nvm ls
v0.10.44
v4.4.3
-> system
default -> 4.4.3 (-> v4.4.3)
node -> stable (-> v4.4.3) (default)
stable -> 4.4 (-> v4.4.3) (default)
iojs -> N/A (default)
$ npm config get prefix
/usr/local
Upvotes: 0