我使用brew在macOS上安装nvm,然后我使用nvm安装节点8.9.1并且工作正常,直到我加载tmux,然后我收到以下消息:
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 v8.9.1 --silent` to unset it.
经过一些故障排除后,我注意到当我使用tmux时,它使用的是不同的npm。
不使用tmux:
~ which npm
/Users/mario/.nvm/versions/node/v8.9.1/bin/npm
~ npm config get prefix
/Users/mario/.nvm/versions/node/v8.9.1
~ echo $NVM_DIR
/Users/mario/.nvm
使用tmux:
~ which npm
/usr/local/bin/npm
~ npm config get prefix
/usr/local
~ echo $NVM_DIR
/Users/mario/.nvm
根据brew中的安装说明,我将以下内容添加到 .zshrc
export NVM_DIR="$HOME/.nvm"
. "/usr/local/opt/nvm/nvm.sh"
此外,如果我在tmux中手动获取 /usr/local/opt/nvm/nvm.sh ,它将按预期工作。
使用tmux:
~ which npm
/usr/local/bin/npm
~ . /usr/local/opt/nvm/nvm.sh
~ which npm
/Users/mario/.nvm/versions/node/v8.9.1/bin/npm
~ npm config get prefix
/Users/mario/.nvm/versions/node/v8.9.1
任何人都可以提供任何可能导致此问题的见解吗?我很乐意在必要时提供其他信息。
版本:
答案 0 :(得分:2)
您在nvm
之外安装了一个Node自制软件包。 nvm
正确地在你的PATH
前面解析了正确版本的Node和npm,因此你的工作结果是:
~ which npm
/Users/mario/.nvm/versions/node/v8.9.1/bin/npm
~ npm config get prefix
/Users/mario/.nvm/versions/node/v8.9.1
~ echo $NVM_DIR
/Users/mario/.nvm
但是,tmux会导致您的PATH
被修改,以便解析不需要的非nvm版本。 path_helper
is the likely culprit here
您可以删除有问题的自制程序包,也可以通过禁用或调整path_helper
的结果来确保解析正确的版本。
前一种解决方案可能会打开另一种蠕虫病毒,因为您已经表明它是通过brewfile安装的,所以让我们看看后者。
One potential solution is to manually unset your PATH before path_helper
runs。另一种解决方案可能是修改/etc/paths
以删除/usr/local/bin
。
答案 1 :(得分:1)
您应该使用nvm.sh
NVM_DIR
以下是.zshrc
export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh" # This loads nvm
nvm use default
如果您因为nvm初始化而每次打开新的Tmux时感觉慢,则可以使用此lazynvm technic