macOS升级后WebStorm、Android Studio无法识别node、yarn
问题原因
macOS 通过 Launchpad、Dock 等图形入口启动 GUI 程序时,不会加载终端 Shell 的配置文件,因此拿不到你在 .zshrc/.bashrc 里通过 nvm 注入的 Node 路径。
你当前的 Node 安装在 nvm 的用户目录下,不属于系统默认全局 PATH 覆盖范围,因此图形界面启动的 IDE 会提示找不到 Node、Yarn;而终端启动时会加载 Shell 配置,通过终端 open 命令启动的程序会继承终端的 PATH 变量,所以可以正常运行。
解决方案
你可以根据自己的使用习惯选下面任意一种方案:
方案1:IDE内手动指定Node路径(零系统改动)
不需要修改任何系统配置,直接在对应IDE里指定Node的绝对路径即可:
- WebStorm:打开设置页
Preferences > Languages & Frameworks > Node.js,点击 Node interpreter 右侧的添加按钮,选择「Add local」,路径选择/Users/danilaberencev/.nvm/versions/node/v16.0.0/bin/node,保存后重启IDE即可自动识别同目录下的 npm、yarn。 - Android Studio:如果是构建脚本、内置终端需要调用Node,同样在对应Node插件/构建配置里,把Node路径填写为上面的绝对路径即可。
方案2:配置GUI程序全局PATH(一劳永逸)
通过系统配置让所有图形界面启动的程序都加载和终端一致的PATH,配置一次所有GUI程序都生效:
- 终端执行以下命令:
sudo launchctl config user path "/Users/danilaberencev/.nvm/versions/node/v16.0.0/bin:/opt/homebrew/bin:/opt/homebrew/sbin:/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin"
- 按照提示输入开机密码,执行完成后重启电脑,配置就会生效。
注意:后续如果用nvm切换了默认Node版本,需要重新执行上述命令,把路径里的v16.0.0替换成新的版本号,重启后生效。
方案3:创建全局软链接(轻量无重启)
M1芯片Mac的 /opt/homebrew/bin 目录默认在GUI程序的全局PATH里,你可以把nvm下的node、yarn、npm软链接到这个目录下,不需要重启系统:
sudo ln -sf /Users/danilaberencev/.nvm/versions/node/v16.0.0/bin/node /opt/homebrew/bin/node sudo ln -sf /Users/danilaberencev/.nvm/versions/node/v16.0.0/bin/npm /opt/homebrew/bin/npm sudo ln -sf /Users/danilaberencev/.nvm/versions/node/v16.0.0/bin/yarn /opt/homebrew/bin/yarn
执行完成后直接打开IDE即可正常识别相关命令。如果后续切换nvm的Node版本,重新执行上述软链接命令替换为新版本路径即可。
内容的提问来源于stack exchange,提问作者Danila Berentsev
相关产品推荐
相关产品推荐

