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

nvm is not compatible with the npm config "prefix" option:

我正在尝试 运行 另一个带有 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

(检查你在任何 ~/.bashrc~/.profile~/.bash_profile 中是否没有其他与 nvm 相关的命令)

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

更多信息

我使用 homebrew 安装了 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 is not compatible with the npm config "prefix" option: currently set to "/usr/local/Cellar/nvm/0.31.0/versions/node/v5.7.1"
Run nvm use --delete-prefix v5.7.1 --silent to unset it.

我遵循了较早的指南(来自 homebrew/nvm),之后我发现我需要重新安装 NodeJS。所以我做了:

nvm install node && nvm alias default node

它已修复。

更新: 使用 brew 安装 NVM 会导致终端启动缓慢。您可以follow this instruction解决它。

我遇到了同样的问题,每次使用终端都非常烦人。我 运行 向终端发送命令,它已修复

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

仅仅 brew uninstall nvm 可能还不够

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

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

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

当我在使用 npm --prefix="" set prefix "" 之前尝试 npm config delete prefixnvm use --delete-prefix 时,我只得到: 错误!不正常代码 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

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

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

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

将主文件夹移动到 linux 上的新驱动器后,我遇到了这个问题。已通过删除 .nvm 文件夹并重新安装 nvm

修复

我在使用通过 nvm 安装的节点时 运行 进入了这个,nvm 通过自制软件安装。我通过 运行 brew uninstall nvmrm -rf $NVM_DIR 解决了它,然后使用 official install script 重新安装 nvm 并重新安装我需要的节点版本。

注意:我还 $NVM_DIR 安装和符号链接。我把它移回了我的主目录。

删除并重置前缀

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

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

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.


感谢@gabfiocchi 在 Github - "You need to overwrite nvm prefix"

这可能与您本地安装的 Node 有冲突(如果您过去是通过 NVM 以外的其他方式安装的)。您应该删除此节点实例:

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

安装nvm后无法安装

刚刚解决了这个问题。我将 $HOME/.nvm 符号链接到 $DEV_ZONE/env/node/nvm 目录。我面临着同样的问题。我将 $HOME/.zshrc 中的 NVM_DIR 替换为如下

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

顺便说一句,请使用 curlwget 命令安装 NVM,而不是使用 brew。更多内容请查看本期Github的评论:855#issuecomment-146115434

我有个想法。使用符号 link 解决错误,您仍然可以对全局安装的包使用您的前缀。 ln -s [your prefix path] [path in the '~/.nvm'] 那么你会在~/.nvm文件夹中有一个符号文件夹,但实际上,你的全局包仍然安装在[你的前缀路径]中。然后就不会再报错了,可以正常使用nvm use **了。 ps:它在 mac 上对我有用。 pps:不要忘记将 $PATH 设置为您的 npm bin 文件夹以使用全局安装的包。

我遵循了 的答案,但结果并不理想。

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

在 运行 推荐的命令之后我的 nvm 不再工作,运行 nvm use 会显示正在使用的正确节点版本,但是 运行 node -v 会显示另一个。无法再更改节点的版本。

我完全卸载并重新安装了 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了。我想这是一个奇怪的情况,因为出现问题并迫使我重新安装所有东西,看起来大多数人都不会因为这个问题而经历这个。

让我描述一下我的情况。

首先,检查当前配置

$ nvm use --delete-prefix v10.7.0
$ npm config list

然后,我在输出中发现错误配置:

; project config /mnt/c/Users/paul/.npmrc
prefix = "/mnt/c/Users/paul/C:\Program Files\nodejs"

所以,我删除了 /mnt/c/Users/paul/.npmrc 中的 C:\Program Files\nodejs

我在 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

修正 link: https://github.com/nvm-sh/nvm/issues/1690#issuecomment-392014774

当您的 NVM 安装文件夹路径 具有 Symbolic Link.

时,可能会发生此错误

说明

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

例如,我的主文件夹是 Symbolic Link 到另一个驱动器:

/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"

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

echo $NVM_DIR

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

替换

export NVM_DIR="$HOME/.nvm"

与(例如)

export NVM_DIR="$HOME.nvm"

我已经尝试了此线程中的每个答案,但 none 有效。按照记录 https://github.com/nvm-sh/nvmcurl 重新安装 nvm 解决了我的问题。

对于那些首先通过自制软件安装节点然后将 nvm 添加到系统的人。

如果您看到嘈杂的消息:nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local您可能需要删除 node_modules 和节点本身,解决方案在上面描述得很完美^^,但下面是简单的方法。

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

1.Go 到 ./.bash_profile 2.注释指向节点的行,像这样 #export PATH="/usr/local/opt/node@10/bin:$PATH"

下次bash应该加载由nvm安装的节点, 确保 bash_profile 包含 nvm 目录 导出 NVM_DIR="/Users/{your_user_name}/.nvm"

对我来说,我删除了行

NPM_PACKAGES="${HOME}/.npm-packages"

PATH="$NPM_PACKAGES/bin:$PATH"

来自我的 .bashrc 并且能够 运行 npm install -g package-name 而无需 sudo 权限或错误消息出现在我的 shell window.

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

所以通过下面的命令删除 nodejs

sudo apt-get remove nodejs

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

在上面的命令之后,你必须运行像那样自动删除命令

sudo apt autoremove

这将解决问题,

这是我为我所做的工作

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

`

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

nvm is not compatible with the npm config "prefix" option: 
currently set to "/Users/z/.npm-global"

运行 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

注意:如果您的终端使用的是 zsh,这也适用。