解决 vsCode 终端命令不能使用问题
描述
系统:MACOS
说明:在使用vsCode的终端,使用 npm i
报错 Cannot find module 'node-gyp/bin/node-gyp'
但在别的终端 如 iTerm2 上面 就可以正常使用。
分析
首先排除 node-gyp
没有全局安装的问题,因为可以在其他的终端正常使用。
其次,看了下两边的版本 node -v
都是 v10.13.0
然后,突然想起,自己先使用官方的安装包(dmg)方式安装,后来为了兼容老项目,安装过 nvm
,会不会是它搞得鬼。使用nvm list
,发现果然不一样。
↓↓↓ iTerm2显示结果 ↓↓↓
↓↓↓ 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 setnpm config prefix
and it breaksnvm