启动tmux时出现NPM / NVM错误:nvm与npm config“ prefix”选项不兼容:当前设置为“”

时间:2019-02-03 16:40:33

标签: npm tmux nvm

当我使用tmuxtmux newtmux new-session开始新的tmux会话时,出现以下错误:

module.js:549
    throw err;
    ^

Error: Cannot find module '../lib/utils/unsupported.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:153:3)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)
nvm is not compatible with the npm config "prefix" option: currently set to ""
Run `npm config delete prefix` or `nvm use --delete-prefix v10.8.0 --silent` to unset it.

我已经尝试了this questionnpm delete prefix的解决方案,但无济于事:在tmux会话外运行无法解决问题,在tmux会话内运行会抛出前一个问题的顶部再次出现错误(没有npm警告):

module.js:549
    throw err;
    ^

Error: Cannot find module '../lib/utils/unsupported.js'
    at Function.Module._resolveFilename (module.js:547:15)
    at Function.Module._load (module.js:474:25)
    at Module.require (module.js:596:17)
    at require (internal/module.js:11:18)
    at /usr/local/lib/node_modules/npm/bin/npm-cli.js:19:21
    at Object.<anonymous> (/usr/local/lib/node_modules/npm/bin/npm-cli.js:153:3)
    at Module._compile (module.js:652:30)
    at Object.Module._extensions..js (module.js:663:10)
    at Module.load (module.js:565:32)
    at tryModuleLoad (module.js:505:12)

这似乎是npm的问题,因为当我运行npm --help时也会出现.js错误。但是,这仅发生在tmux中。

有解决方案吗?

5 个答案:

答案 0 :(得分:0)

我认为您应该运行

  

npm安装

这应该可以解决问题。

答案 1 :(得分:0)

  

已修复:看起来这可能特定于macOS的处理方式   每个bash外壳上的路径。添加推荐的路径清除逻辑   我的个人资料文件中为我解决了此问题。

在tmux上也看到了这一点,通过curl脚本安装了nvm。

奇怪的是,当我在tmux中以及仅在我的shell(zsh)中时,似乎正在使用不同版本的npm。当我使用tmux时,在zsh中执行一个npm会导致/usr/local/bin/npm,而在{sh}中则为/Users/brett/.nvm/versions/node/v10.8.0/bin/npm

似乎这可能与tmux重新加载我的配置文件并向$ PATH附加更多路径有关。

查看此处: When using tmux nvm isn't being sourced

答案 2 :(得分:0)

Bash在tmux中作为登录shell启动。在macOS上,它是〜/ .bash_profile,而不是来源的〜/ .bashrc AFAIK。

您是否尝试过将source ~/.bashrc添加到您的〜/ .bash_profile?

答案 3 :(得分:0)

这是另一种可能的解决方案:

$ npm config delete prefix 
$ npm config set prefix $NVM_DIR/versions/node/v6.11.1

这应该删除并重置前缀,您以后可以对其进行编辑。

答案 4 :(得分:0)

在互联网上浏览后,我找到了一些可以接受的答案:

尝试再次配置$ NVM_DIR参考。

例如nvm使用v7.10.0,并出现错误:运行npm config delete prefixnvm use --delete-prefix v7.10.0 --silent取消设置。

您需要覆盖nvm前缀,

npm配置设置前缀$ NVM_DIR / versions / node / v7.10.0

https://github.com/nvm-sh/nvm/issues/855#issuecomment-314309706

OR

如果您正在使用除bash以外的任何其他shell,请确保以这种方式配置tmux:

# set default shell to zsh
set -g default-command /bin/zsh
set -g default-shell /bin/zsh

这为我解决了。

https://github.com/nvm-sh/nvm/issues/1245#issuecomment-370396741

OR

在您的shell文件(例如〜/ .zshrc)中注释以下代码:

export NVM_DIR="$HOME/.nvm"
[ -s "$NVM_DIR/nvm.sh" ] && \. "$NVM_DIR/nvm.sh"  # This loads nvm
[ -s "$NVM_DIR/bash_completion" ] && \. "$NVM_DIR/bash_completion"  # This loads nvm bash_completion

注销您的帐户并登录

uncommnet上面的这些代码和源shell文件

OR

nvm unalias default

https://stackoverflow.com/a/47861348/6700273 https://blog.natetodd.com/nvm/