使用 tmux 时,未获取 nvm

Mar*_*rio 4 macos homebrew zsh node.js tmux

我使用brew在macOS上安装nvm,然后使用nvm安装node 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.
Run Code Online (Sandbox Code Playgroud)

经过一些故障排除后,我注意到当我使用 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
Run Code Online (Sandbox Code Playgroud)

使用 tmux:

~ which npm
/usr/local/bin/npm
~ npm config get prefix
/usr/local
~ echo $NVM_DIR
/Users/mario/.nvm
Run Code Online (Sandbox Code Playgroud)

根据brew中的安装说明,我将以下内容添加到我的.zshrc中

export NVM_DIR="$HOME/.nvm"
. "/usr/local/opt/nvm/nvm.sh"
Run Code Online (Sandbox Code Playgroud)

此外,如果我在 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
Run Code Online (Sandbox Code Playgroud)

任何人都可以提供任何可能导致此问题的见解吗?我很乐意根据需要提供其他信息。

版本:

  • macOS 10.13.1
  • zsh 5.4.2
  • 多路复用器2.6
  • NVM 0.33.6
  • 节点8.9.1
  • npm 5.5.1

Rya*_* Wu 5

你应该使用你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
Run Code Online (Sandbox Code Playgroud)

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