我试图用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而不丢失全局安装包的前缀?


当前回答

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

但这确实起了作用:

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

并在~/.bash_profile中添加以下行:

export NVM_DIR=~/.nvm
. $(brew --prefix nvm)/nvm.sh

(检查在~/中没有其他与nvm相关的命令。Bashrc或~/。Profile或~/.bash_profile)

打开一个新终端,这次它应该不会打印任何警告消息。 执行nvm——version命令检查nvm是否正常工作。 然后,使用nvm install node && nvm alias default node安装/重新安装NodeJS。

更多信息

我用自制程序安装了nvm,之后我收到了这个通知:

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.

忽略它让我看到了这个错误消息:

nvm不兼容npm配置的“prefix”选项:当前设置为“/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

它是固定的。

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

其他回答

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

echo $NVM_DIR

在我的例子中:/var/www//.nvm。显示在您自动生成的bash文件中,并更改它并替换它:(~/。bash_profile、~ /。zshrc ~ /。配置文件或~/.bashrc)

取代

export NVM_DIR="$HOME/.nvm"

(例如)

export NVM_DIR="$HOME.nvm"

我也遇到过同样的问题,这是因为node和nodejs的npm冲突

因此,通过以下命令删除nodejs

sudo apt-get remove nodejs

这将删除所有与nodejs相关的包,

在上面的命令之后,您必须运行autoremove命令

sudo apt autoremove

这样问题就解决了,

对于那些第一次通过自制程序安装node,然后将nvm添加到系统中的用户。

如果你看到嘈杂的消息:nvm不兼容npm配置“prefix”选项:当前设置为“/usr/local”,你可能需要删除node_modules和节点本身,解决方案在上面^^有完美的描述,但下面是简单的方法。

由于brew自动将env var添加到.bash_profile中,每次bash加载路径都指向最初安装的版本。

1.进入。/.bash_profile 2. 注释指向节点的行,如下所示 # =出口路径“/ usr /地方/ opt / node@10 / bin:美元路径”

下次bash应该加载nvm安装的节点, 确保bash_profile包含NVM dir 出口NVM_DIR = " /用户/ {your_user_name} / .nvm”

如果你把你的主目录挂载在某个地方,这可能是一个问题,因为nvm不能正确地使用符号链接。因为我不关心我的$NVM_DIR位于哪里,我运行这个,一切正常:

$ mv ~/.nvm /tmp/
$ export NVM_DIR="/tmp/.nvm"
$ nvm use --delete-prefix v6.9.1

删除并重置字冠

$ npm config delete prefix 
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1

注意:将版本号更改为错误消息中指示的版本号。

NVM不兼容NPM配置“prefix”选项:目前 set to "/usr/local"执行"npm config delete prefix"或"nvm use " ——delete-prefix v6.11.1——silent"


@gabfiocchi在Github -“你需要覆盖nvm前缀”