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


当前回答

对于那些第一次通过自制程序安装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文档https://github.com/nvm-sh/nvm与curl修复了我的问题。

我遵循https://stackoverflow.com/a/47861348/2391795的答案,但效果不太好。

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

在运行推荐的命令后,我的nvm不再工作,运行nvm use将显示正在使用的正确节点版本,但运行node -v将显示另一个版本。不可能再改变node的版本了。

我完全卸载并重新安装nvm来修复它。我跟随https://github.com/creationix/nvm#manual-uninstall跑步

$ rm -rf "$NVM_DIR"

然后编辑我的.zshrc以删除与nvm相关的行,在我的例子中是

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"

然后启动一个新的shell(这样nvm就不会在这个新的shell中加载)并运行https://github.com/creationix/nvm#install-script

curl -o- https://raw.githubusercontent.com/creationix/nvm/v0.34.0/install.sh | bash

它添加了nvm我以前在.zshrc中删除的行。

然后我就可以像以前一样使用nvm了。我想这是一个奇怪的情况,事情出了问题,迫使我重新安装一切,看起来不像大多数人通过这个由于这个问题。

删除并重置字冠

$ 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前缀”

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

echo $NVM_DIR

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

取代

export NVM_DIR="$HOME/.nvm"

(例如)

export NVM_DIR="$HOME.nvm"

我正在寻找nvm前缀问题的解决方案,发现了这个问题(在找到解决方案之前)。这是我的shell“dialog”。我希望它能对某些人有用。在这篇文章的帮助下,我能够设置为前缀: https://github.com/npm/npm/issues/6592

当我在使用npm——prefix="" set prefix ""之前尝试npm config delete prefix或nvm use——delete-prefix ""时,我只得到: npm犯错!不行,代码0

注意,您必须对每个节点版本重复相同的过程,安装后前缀将被设置回(在我的例子中)/usr/local。

    $ 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