我使用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
任何人都可以提供对导致此问题的原因的任何见解?我很高兴根据需要提供其他信息。
版本:
macOS 10.13.1
zsh 5.4.2
tmux 2.6
虚拟机0.33.6
节点8.9.1
npm 5.5.1
最佳答案
除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
。关于node.js - 使用tmux时不提供nvm,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/47442647/