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


当前回答

我解决了这个问题,当它显示在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

其他回答

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

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

删除并重置字冠

$ 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 移除节点link CD /usr/local/bin && ls -l | grep "../lib/node_modules/" | awk '{print $9}'| xargs rm .

当你不能安装nvm

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

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

对我来说,我去掉了线条

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

PATH="$NPM_PACKAGES/bin:$PATH"

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