解决 vsCode 终端命令不能使用问题

error

解决 vsCode 终端命令不能使用问题

描述

系统:MACOS
说明:在使用vsCode的终端,使用 npm i 报错 Cannot find module 'node-gyp/bin/node-gyp' 但在别的终端 如 iTerm2 上面 就可以正常使用。

error

分析

首先排除 node-gyp 没有全局安装的问题,因为可以在其他的终端正常使用。
其次,看了下两边的版本 node -v 都是 v10.13.0
然后,突然想起,自己先使用官方的安装包(dmg)方式安装,后来为了兼容老项目,安装过 nvm ,会不会是它搞得鬼。使用nvm list,发现果然不一样。

↓↓↓ iTerm2显示结果 ↓↓↓
iTerm2显示结果

↓↓↓ vsCode终端显示结果 ↓↓↓
vsCode终端显示结果

那么显而易见 就是这个原因了。vsCode 中的终端 使用的是我前面dmg安装的系统的变量以及node_pacage包,而 iTerm2 则使用的是 nvm的变量及包。

解决

知道了原因就对症下药。

临时解决方案:

在vsCode的终端也使用跟 iTerm2 中一样的 nvm 版本。

即 在 vsCode 终端中 执行 nvm use v10.13.0, 也能够正常的使用。

为什么说临时呢,因为当你关闭编辑器,再次打开的时候,还得设置。

最终解决方案:

在 Google 了一圈在这个 github 的 issues发现解决问题

即 在 vsCode 的 settings.json 文件中增加 "terminal.integrated.shellArgs.osx": []

PS:每个系统的 settings.json 存放位置不一样,可借鉴下面。

  • Windows %APPDATA%\Code\User\settings.json
  • macOS $HOME/Library/Application Support/Code/User/settings.json
  • Linux $HOME/.config/Code/User/settings.json

参考资料

User and Workspace Settings
Terminal seems to set npm config prefix and it breaks nvm

坚持原创技术分享,您的支持将鼓励我继续创作!