nvm与npm config的“ prefix”选项不兼容:

node.js Node.js

西门蛋蛋JinJin

2020-03-23

我正在尝试运行另一个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而不会丢失全局安装软件包的前缀?

第2997篇《nvm与npm config的“ prefix”选项不兼容:》来自Winter(https://github.com/aiyld/aiyld.github.io)的站点

14个回答
JinJin 2020.03.23

当它在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

阿飞 2020.03.23

注意:
要删除,删除或卸载nvm-只需删除$NVM_DIR文件夹(通常是~/.nvm),
您可以尝试:
rm -rf ~/.nvm

西门JinJin 2020.03.23

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

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

顺便说一句,请使用curlwget命令而不使用来安装NVM brew有关更多信息,请在Github上查看本期中的评论:855#issuecomment-146115434

达蒙 2020.03.23

将主文件夹移动到Linux上的新驱动器后,出现了这个问题。通过删除.nvm文件夹并重新安装nvm可以修复此问题。

猴子 2020.03.23

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

当我尝试使用之前npm config delete prefixnvm use --delete-prefix使用之前npm --prefix="" set prefix "",我只有:npm ERR!错误代码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
逆天路易 2020.03.23

让我描述一下我的情况。

首先,检查当前配置

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

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

GO西门 2020.03.23

我遵循了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将显示另一个节点版本不再可能更改节点的版本。

我完全卸载并重新安装了nvm来修复它。通过运行遵循https://github.com/creationix/nvm#manual-uninstall

$ rm -rf "$NVM_DIR"

然后编辑my .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"

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

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

其中添加了nvm我以前在.net中删除的行.zshrc

然后我可以像以前一样使用nvm。我想这是一个奇怪的情况,如果出现问题并迫使我重新安装所有内容,由于这个问题,大多数人似乎都无法通过。

L村村小宇宙 2020.03.23

我有相同的错误消息,但其他解决方案。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"
LGil 2020.03.23

在此处输入图片说明我遇到了同样的问题,每次使用终端时都非常烦人。我运行命令到终端,它是固定的

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

仅仅冲煮卸载nvm可能还不够

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

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

番长SamJim 2020.03.23

我在使用通过安装的节点nvmnvm通过自制程序安装的节点时遇到了这个问题我通过运行brew uninstall nvm解决了问题rm -rf $NVM_DIR,然后使用正式的安装脚本重新安装了nvm 并重新安装了所需的节点版本。

注意:我也已经$NVM_DIR安装并符号链接。我将其移回了我的homedir。

猪猪斯丁 2020.03.23

当您的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"
null 2020.03.23

如果您的主目录挂载在某个地方,则可能是问题所在,因为nvm在符号链接中无法正常工作。因为我不在乎$ NVM_DIR在哪里,所以我运行了此命令,并且一切正常:

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

删除并重置前缀

$ 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.


Credits to @gabfiocchi on Github - "You need to overwrite nvm prefix"

LGil 2020.03.23

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

但是这样做:

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

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

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

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

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

更多信息

我安装nvm使用homebrew,之后收到此通知:

请注意,上游要求我们不支持通过Homebrew显式管理nvm,因此在报告之前,您应对照标准nvm安装方法检查任何问题。

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

 mkdir ~/.nvm

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

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

您可以设置$NVM_DIR为任何位置,但是将其保留不变 /usr/local/Cellar/nvm/0.31.0将在升级/重新安装时破坏所有安装了nvm的Node安装。

忽略它使我出现以下错误消息:

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

它是固定的。

更新: 使用brew安装NVM会导致终端启动缓慢。您可以按照以下说明进行解决。

问题类别

JavaScript Ckeditor Python Webpack TypeScript Vue.js React.js ExpressJS KoaJS CSS Node.js HTML Django 单元测试 PHP Asp.net jQuery Bootstrap IOS Android