nvm与npm config"prefix"选项不兼容:

Dmi*_*sev 181 prefix node.js npm nvm

我试图运行另一个NodeJS版本,nvm但收到此错误:

$ 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.
Run Code Online (Sandbox Code Playgroud)

我故意设置了我的前缀sudo npm(参见https://docs.npmjs.com/getting-started/fixing-npm-permissions).

有没有办法可以使用nvm而不会丢失全局安装包的前缀?

Mic*_*ick 319

删除并重置前缀

$ npm config delete prefix 
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1
Run Code Online (Sandbox Code Playgroud)

注意:使用错误消息中指示的版本号更改版本号.

nvm与npm config"prefix"选项不兼容:当前设置为"/ usr/local"运行"npm config delete prefix"或"nvm use --delete-prefix v6.11.1 --silent"取消设置.


Github上@gabfiocchi的积分 - "你需要覆盖nvm前缀"

  • 这就像一个魅力!只需抓住我的节点版本. (9认同)
  • 这仅在当前窗口中有效。如果打开新的外壳或新的窗口,则必须重新做一遍。 (3认同)
  • 我必须按顺序做这些。1. nvm使用--delete-prefix vx.xx --silent 2. npm config删除前缀3. npm config设置前缀$ NVM_DIR / versions / node / vx.xx (2认同)

S.M*_*avi 60

我有同样的问题,执行npm config delete prefix并没有帮助我.

但这样做:

使用brew安装nvm后,创建~/.nvm目录:
$ mkdir ~/.nvm

并将以下行添加到~/.bash_profile:

export NVM_DIR=~/.nvm
. $(brew --prefix nvm)/nvm.sh
Run Code Online (Sandbox Code Playgroud)

(请确认您在任何没有其他NVM相关命令~/.bashrc~/.profile~/.bash_profile)

打开一个新终端,这次不应该打印任何警告信息.
通过执行nvm --version命令检查nvm是否正常工作.
之后,使用安装/重新安装NodeJS nvm install node && nvm alias default node.

更多信息

我安装nvm使用homebrew,之后我得到了这个通知:

请注意,上游要求我们通过Homebrew明确管理nvm不受他们的支持,您应该在报告之前检查标准nvm安装方法的任何问题.

如果NVM的工作目录不存在,您应该创建它:

 mkdir ~/.nvm
Run Code Online (Sandbox Code Playgroud)

将以下内容添加到~/.bash_profile您所需的shell配置文件中:

 export NVM_DIR=~/.nvm
 . $(brew --prefix nvm)/nvm.sh
Run Code Online (Sandbox Code Playgroud)

您可以设置$NVM_DIR为任何位置,但保持不变 /usr/local/Cellar/nvm/0.31.0将在升级/重新安装时销毁任何nvm安装的节点安装.

忽略它让我收到此错误消息:

nvmnpm config"前缀"选项不兼容:当前设置为"/usr/local/Cellar/nvm/0.31.0/versions/node/v5.7.1"
"运行" nvm use --delete-prefix v5.7.1 --silent以取消设置.

我按照早期的指南(从homebrew/nvm),然后我发现我需要重新安装NodeJS.所以我做了:

nvm install node && nvm alias default node
Run Code Online (Sandbox Code Playgroud)

它是固定的.

更新: 使用brew安装NVM会导致终端启动缓慢.您可以按照此说明解决此问题.

  • (这里是nvm维护者)通过brew安装时不支持`nvm`.请卸载它并使用正确的方法,自述文件中的curl脚本. (27认同)
  • `nvm别名默认节点`似乎对我有帮助 (5认同)
  • 我使用curl脚本来安装`nvm`.这个答案对我不起作用. (3认同)

小智 33

这可能与您本地安装的Node发生冲突(如果您以前通过其他方式安装了NV).您应该删除此节点实例:

  1. 删除node_modules sudo rm -rf /usr/local/lib/node_modules
  2. 删除节点 sudo rm /usr/local/bin/node
  3. 删除节点链接 cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm

在你无法安装nvm之后

  • 你想用一些解释来增加你的代码答案吗?评论是不够的,因为你的命令行比他们解释的更复杂.详细说明为什么答案的细节可以解决问题.将您的答案与多年前的答案进行对比.是什么让你的回答成为这个问题的附加价值? (7认同)

小智 28

当您的NVM 安装文件夹路径具有Symbolic Link时,可能会发生此错误。

解释

NVM 的默认安装路径是:$HOME/.nvm但是您的主文件夹可能是另一个驱动器的符号链接,就像我的情况一样。

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

/home/myuser -> /bigdrive/myuser

这会导致前缀问题。

解决方案

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

例如: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"
Run Code Online (Sandbox Code Playgroud)


Jam*_*May 9

如果您的主目录已安装在某处,则可能是问题,因为nvm无法与符号链接一起正常工作.因为我不在乎我的$ NVM_DIR在哪里,我运行这个并且一切正常:

$ mv ~/.nvm /tmp/
$ export NVM_DIR="/tmp/.nvm"
$ nvm use --delete-prefix v6.9.1
Run Code Online (Sandbox Code Playgroud)


Lan*_*tig 9

我就遇到了这个,而使用通过安装的节点nvm,与nvm通过自制软件安装.我通过运行解决了它brew uninstall nvm,rm -rf $NVM_DIR,然后使用重新安装NVM 官方安装脚本并重新安装我所需要的节点版本.

注意:我也有$NVM_DIR挂载和符号链接.我把它搬回了我的家.


Mat*_*ner 7

我有相同的错误消息,但有其他解决方案。curl (install.sh) 期间自动生成的路径不匹配。检查这个:

echo $NVM_DIR
Run Code Online (Sandbox Code Playgroud)

就我而言: /var/www//.nvm。在自动生成的 bash 文件中显示并更改并替换它:(~/.bash_profile、~/.zshrc、~/.profile 或 ~/.bashrc)

代替

export NVM_DIR="$HOME/.nvm"
Run Code Online (Sandbox Code Playgroud)

与(例如)

export NVM_DIR="$HOME.nvm"
Run Code Online (Sandbox Code Playgroud)


Pan*_*iou 6

在此输入图像描述我遇到了同样的问题,每次使用终端时都很烦人.我将命令运行到终端并修复了

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

它可能还不足以酿造卸载nvm

如果你看到npm前缀仍然是/ usr/local,请运行此命令

sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}


小智 5

只需两个命令即可解决此问题。某些用户在打开终端时也可能会收到错误消息。他们首先看到的是这个错误:

nvm is not compatible with the npm config "prefix" option: 
currently set to "/Users/z/.npm-global"
Run Code Online (Sandbox Code Playgroud)

运行npm config delete prefixnvm use --delete-prefix v4.2.4取消设置。

因此,要解决此问题,请运行以下两个命令。注意:将版本号更改为错误中显示的版本号。

$ npm config delete prefix 
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1
Run Code Online (Sandbox Code Playgroud)

注意:如果您的终端使用 zsh,这也将起作用。