NVM与NPM配置不兼容。选择:

我试图运行另一个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.

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

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

164051 次浏览

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

但这确实起了作用:

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

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

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

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

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

更多信息

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

请注意,上游已经要求我们进行明确管理 他们不支持nvm via Homebrew,你应该检查一下 在报告之前,与标准NVM安装方法存在问题

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

 mkdir ~/.nvm
将以下内容添加到~/.bash_profile或您所需的shell中 配置文件:< / p >
 export NVM_DIR=~/.nvm
. $(brew --prefix nvm)/nvm.sh
你可以将$NVM_DIR设置为任何位置,但从 /usr/local/Cellar/nvm/0.31.0将销毁任何nvm安装的Node安装 在升级/安装。< / p >

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

nvmnpm config "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会导致终端启动缓慢。你可以遵循以下说明来解析它

enter image description hereI有同样的问题,这是真的讨厌每次与终端。我向终端运行命令,它被修复了

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

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

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

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

我正在寻找nvm前缀问题的解决方案a发现了这个问题(在找到解决方案之前)。这是我的shell“dialog”。我希望它能对某些人有用。在这篇文章的帮助下,我能够设置为前缀: https://github.com/npm/npm/issues/6592 < / p > 当我在使用npm --prefix="" set prefix ""之前尝试npm config delete prefixnvm 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

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

$ mv ~/.nvm /tmp/
$ export NVM_DIR="/tmp/.nvm"
$ nvm use --delete-prefix v6.9.1
< p >注意:< br > 删除,删除或卸载nvm -只需删除$NVM_DIR文件夹(通常是~/.nvm)
你可以试试:
rm -rf ~/.nvm < / p >

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

我在使用通过nvm安装的节点时遇到了这个问题,而nvm是通过homebrew安装的。我通过运行brew uninstall nvmrm -rf $NVM_DIR来解决这个问题,然后使用正式安装脚本重新安装nvm,并重新安装我需要的节点版本。

注意:我还挂载了$NVM_DIR并进行了符号链接。我把它移回了homedir。

删除并重置字冠

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

这可能与您的本地Node安装(如果您过去通过NVM以外的其他方式安装了Node)存在冲突。你应该删除这个node实例:

    <李>删除node_modules Sudo rm -rf /usr/local/lib/node_modules 李< /代码> < / > <李>删除节点 Sudo rm /usr/local/bin/node < /代码 >
  1. 移除节点链接 CD /usr/local/bin &Ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm . 李< /代码> < / >

当你不能安装nvm

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

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

顺便说一句,请使用curlwget命令安装NVM,而不是使用brew。欲了解更多,请查看Github上这个问题的评论:855#issue -146115434

我有个主意。使用符号链接解决错误,您仍然可以为全局安装的包使用前缀。 Ln -s[你的前缀路径][在'~/.nvm'中的路径] 那么你将在~/.nvm文件夹中有一个符号文件夹,但实际上,你的全局包仍然安装在[你的前缀路径]中。然后错误将不会再次显示,您可以正常使用nvm use **。 ps:它在mac上为我工作。

:不要忘记在你的npm bin文件夹中设置$PATH来使用全局安装的包

我遵循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了。我想这是一个奇怪的情况,事情出了问题,迫使我重新安装一切,看起来不像大多数人通过这个由于这个问题。

让我描述一下我的情况。

首先,检查当前配置

$ 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

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

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

解释

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"

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

echo $NVM_DIR

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

取代

export NVM_DIR="$HOME/.nvm"

(例如)

export NVM_DIR="$HOME.nvm"

我试过了这篇文章里的每一个答案,但没有一个奏效。用curl重新安装nvm可以解决我的问题。

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

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

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

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

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

对我来说,我去掉了线条

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


PATH="$NPM_PACKAGES/bin:$PATH"

从我的.bashrc和能够运行npm install -g package-name,而不需要sudo权限或有错误消息出现在我的shell窗口。

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

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

sudo apt-get remove nodejs

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

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

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

enter image description here

只有两个命令可以解决这个问题。 有些用户也可能在打开终端时得到错误。他们看到的第一件事是这个错误:

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,这也可以工作。

下面的sh文件有助于我的案例

# nvmish.sh
unset npm_config_prefix
source $HOME/.nvm/nvm.sh
nvm use 18