【发布时间】:2017-11-22 19:37:16
【问题描述】:
我使用 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.
经过一些故障排除后,我注意到当我使用 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 之前,您是否使用其他方法(例如 brew)安装了 Node.js?另外,您确定您的
.zshrc是由 tmux 采购的吗?也许在 tmux 内部和外部检查您的 PATH 。发布您的~/.tmux.conf也可能会有所帮助 -
@FissureKing 我确定正在获取 .zshrc,但我认为您可能是正确的关于正在安装的另一个节点。我正在使用 Brewfile 并且两个包似乎具有必需的节点并且可能导致冲突。发表您的评论作为答案,如果清理 brew 安装的节点依赖项可以解决问题,我很乐意将您的答案标记为正确。
-
当然,我会写下来。然而,虽然删除有问题的包可能会产生正确的结果,即
npm config get prefix工作,但它并没有解释 为什么 tmux 和正常的 shell 访问会为which npm提供不同的结果。我怀疑这可能是由于path_helper在您的 PATH 中添加了默认值。见superuser.com/questions/544989/does-tmux-sort-the-path-variable
标签: node.js macos homebrew zsh tmux