繁体   English   中英

当使用tmux时,nvm没有被采购

[英]When using tmux nvm isn't being sourced

我使用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
  • nvm 0.33.6
  • 节点8.9.1
  • npm 5.5.1

除了nvm之外,您还安装了一个Node homebrew软件包。 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可能是这里的罪魁祸首

您可以删除有问题的自制程序包,也可以通过禁用或调整path_helper的结果来确保解析正确的版本。

前一个解决方案可能会打开另一个蠕虫病毒,因为你已经表明它是通过brewfile安装的,所以让我们看一下后者。

一个可能的解决方案是在path_helper运行之前手动取消设置PATH 另一种解决方案可能是修改/etc/paths以删除/usr/local/bin

您应该在nvm.sh下使用您的NVM_DIR

以下是我在NVM相关配置.zshrc

export NVM_DIR=~/.nvm
[ -s "$NVM_DIR/nvm.sh" ] && . "$NVM_DIR/nvm.sh"  # This loads nvm
nvm use default

如果你因为nvm初始化而每次打开一个新的Tmux时都觉得它很 ,你可以使用这个lazynvm技术

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM