我正在尝试使用 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
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1
注意:将版本号更改为错误消息中指示的版本号。
nvm 与 npm config "prefix" 选项不兼容:当前设置为 "/usr/local" 运行 "npm config delete prefix" 或 "nvm use --delete-prefix v6.11.1 --silent" 以取消设置。
感谢 Github 上的 @gabfiocchi - "You need to overwrite nvm prefix"
我遇到了同样的问题,执行 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 是否正常工作。
之后,使用 nvm install node && nvm alias default node
安装/重新安装 NodeJS。
更多信息
我使用 homebrew
安装了 nvm
,之后我收到了以下通知:
请注意,上游已要求我们通过 Homebrew 明确管理 nvm,他们不支持,您应该在报告之前根据标准 nvm 安装方法检查任何问题。如果 NVM 的工作目录不存在,您应该创建它: mkdir ~/.nvm 将以下内容添加到 ~/.bash_profile 或您想要的 shell 配置文件中: export NVM_DIR=~/.nvm 。 $(brew --prefix nvm)/nvm.sh 您可以将 $NVM_DIR 设置为任何位置,但在 /usr/local/Cellar/nvm/0.31.0 中保持不变将在升级/重新安装时破坏任何 nvm 安装的节点安装.
忽略它给我带来了这个错误消息:
nvm 与 npm 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 会导致终端启动缓慢。您可以follow this instruction解决它。
nvm alias default node
似乎对我有帮助
nvm
。请卸载它并使用正确的方法,即自述文件中的 curl 脚本。
nvm
。这个答案对我不起作用。
rm -rf node_modules
并再次运行 npm install
,因为目录已经存在严重的权限问题。
brew remove node -f
,它会删除所有已安装的版本。首先执行此操作,然后按照我上面链接中的指南进行操作,然后删除 node_modules。你应该得到一个干净的安装!我认为您还必须安装 npm,我只是按照我搜索它时弹出的 nodejs.org 文章中的说明进行操作。 npm install npm@latest -g
是命令,一旦你安装了节点。
这可能与您本地安装的 Node 有冲突(如果您过去通过 NVM 以外的其他方式安装它)。您应该删除此节点实例:
删除节点模块 sudo rm -rf /usr/local/lib/node_modules 删除节点 sudo rm /usr/local/bin/node 删除节点链接 cd /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{打印 $9}'| xargs rm
在你无法安装 nvm 之后
当您的 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"
export HOME="/big/drive/myuser"
这应该更有弹性。虽然对于您的情况,我只会使用 fstab 绑定安装它。如果这会导致更多问题,我可能会走那条路。
我在使用通过 nvm
安装的节点时遇到了这个问题,通过自制软件安装了 nvm
。我通过运行 brew uninstall nvm
、rm -rf $NVM_DIR
解决了这个问题,然后使用 official install script 重新安装 nvm 并重新安装我需要的节点版本。
注意:我还安装了 $NVM_DIR
并进行了符号链接。我把它移回我的homedir。
如果您将主目录安装在某处,则可能是问题所在,因为 nvm 无法与符号链接一起正常工作。因为我不在乎我的 $NVM_DIR 在哪里,所以我运行它并且一切正常:
$ mv ~/.nvm /tmp/
$ export NVM_DIR="/tmp/.nvm"
$ nvm use --delete-prefix v6.9.1
https://i.stack.imgur.com/kEart.png
对于那些尝试从 brew 中删除 nvm
仅仅 brew uninstall nvm 可能还不够
如果您看到 npm 前缀仍然是 /usr/local,请运行此命令
sudo rm -rf /usr/local/{lib/node{,/.npm,_modules},bin,share/man}/{npm*,node*,man1/node*}
我有相同的错误消息,但有其他解决方案。 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"
只有两个命令可以解决此问题。一些用户在打开终端时也可能会收到错误消息。他们首先看到的是这个错误:
nvm is not compatible with the npm config "prefix" option:
currently set to "/Users/z/.npm-global"
运行 npm config delete prefix
或 nvm use --delete-prefix v4.2.4
取消设置。
因此,要解决此问题,请运行以下两个命令。注意:将版本号更改为与错误中显示的相同。
$ npm config delete prefix
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1
注意:如果您的终端使用 zsh,这也将起作用。
当它在 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
我已经尝试了这个线程中的每个答案,但没有一个有效。使用 curl
重新安装 nvm
,如记录的 https://github.com/nvm-sh/nvm 解决了我的问题。
curl -o- https://raw.githubusercontent.com/nvm-sh/nvm/v0.38.0/install.sh | bash
我遵循了 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"
然后编辑我的 .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
其中添加了我之前在 .zshrc
中删除的行的 nvm。
然后我就可以像以前一样使用 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
。
对于那些首先通过自制软件安装节点然后将 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.转到 ./.bash_profile 2. 注释指向节点的行,例如 #export PATH="/usr/local/opt/node@10/bin:$PATH"
下次 bash 应该加载由 nvm 安装的节点时,确保 bash_profile 包含 nvm dir export NVM_DIR="/Users/{your_user_name}/.nvm"
我正在寻找 nvm 前缀问题的解决方案,发现了这个问题(在找到解决方案之前)。这是我的外壳“对话框”。我希望,它可以对某人有用。在这篇文章的帮助下,我能够设置前缀:https://github.com/npm/npm/issues/6592
当我在使用 npm --prefix="" set prefix ""
之前尝试 npm config delete prefix
或 nvm use --delete-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
将我的主文件夹移动到 linux 上的新驱动器后,我遇到了这个问题。通过删除 .nvm 文件夹并重新安装 nvm 已修复
刚刚解决了问题。我将 $HOME/.nvm
符号链接到 $DEV_ZONE/env/node/nvm
目录。我面临同样的问题。我将 $HOME/.zshrc
中的 NVM_DIR
替换为如下
export NVM_DIR="$DEV_ZONE/env/node/nvm"
顺便说一句,请使用 curl
或 wget
命令安装 NVM,而不是使用 brew
。更多信息请查看 Github 上本期的评论:855#issuecomment-146115434
npm
安装 nvm
怎么样?
我只是有个想法。使用符号链接解决错误,您仍然可以将前缀用于全局安装的包。 ln -s [your prefix path] [path in the '~/.nvm']
那么您将在 ~/.nvm
文件夹中有一个符号文件夹,但实际上,您的全局包仍然安装在 [您的前缀路径] 中。然后错误将不再显示,您可以正常使用nvm use **
。 ps:它在 mac
对我有用。 pps:不要忘记将 $PATH
设置为您的 npm bin
文件夹以使用全局安装的软件包。
对我来说,我删除了这些线条
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-须藤苏
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#节点-v
https://i.stack.imgur.com/odHb4.png
注意:
要删除、删除或卸载 nvm - 只需删除 $NVM_DIR
文件夹(通常是 ~/.nvm
)
您可以尝试:
rm -rf ~/.nvm
npm config set prefix $NVM_DIR/versions/node/<node-version-directory>