我试图用nvm运行另一个NodeJS版本,但得到这个错误:

$ 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.

我特意设置了前缀,以避免sudo npm(参见https://docs.npmjs.com/getting-started/fixing-npm-permissions)。

是否有任何方法可以使用nvm而不丢失全局安装包的前缀?


当前回答

我解决了这个问题,当它显示在VSCode和JetBrains终端,但不是在本机终端使用以下命令:

ls -la /usr/local/bin | grep "np[mx]"

这将为你提供最终的解析路径:

... npm -> ../lib/node_modules/npm/bin/npm-cli.js
... npx -> ../lib/node_modules/npm/bin/npx-cli.js

从那里,删除文件并重新启动VS Code应该可以修复这个问题:

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

修复链接:https://github.com/nvm-sh/nvm/issues/1690#issuecomment-392014774

其他回答

刚刚解决了问题。我用符号链接$HOME/。$DEV_ZONE/env/node/nvm目录下。我也面临着同样的问题。我替换了$HOME/中的NVM_DIR。ZSHRC如下

export NVM_DIR="$DEV_ZONE/env/node/nvm"

顺便说一下,请使用curl或wget命令安装NVM,而不是使用brew。欲了解更多信息,请查看Github: 855#issue -146115434本期的评论

我也有同样的问题,每次使用终端都很烦人。我向终端运行命令,它被修复了

对于那些试图从brew中删除nvm的人

仅仅酿造卸载NVM可能是不够的

如果您看到NPM prefix仍然是/usr/local,请执行此命令

Sudo rm -rf /usr/local/ {lib /节点{/ .npm _modules},垃圾桶,分享/人}/ {npm *,节点*,男士一/节点*}

注意: 删除,删除或卸载nvm -只需删除$NVM_DIR文件夹(通常是~/.nvm) 你可以试试: Rm -rf ~/.nvm

以下是我所做的工作

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使用——delete-prefix v17.4.0

5- ' root@antonio:/home/antonio# node -v

`

当NVM安装文件夹路径具有符号链接时,可能会发生此错误。

解释

NVM默认安装路径为“$HOME/”。但是你的主文件夹可以是另一个驱动器的符号链接,就像我的例子。

例如,我的主文件夹是一个符号链接到另一个驱动器:

- home/myuser -> /bigdrive/myuser

这会导致前缀问题。

解决方案

在您的启动脚本(。bashrc或.zshrc或其他),将NVM文件夹更改为直接路径。

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"