当我使用tmux
,tmux new
或tmux 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 question即npm 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中。
有解决方案吗?
答案 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附加更多路径有关。
答案 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 prefix
或nvm 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/