VS Code终端(zsh)执行node命令报dyld库加载错误求助
这种情况我之前排查过好几次,核心原因一般是VS Code的终端没有正确继承brew的环境配置,或者缓存了旧的库路径。你已经试过brew update/upgrade,那可以试试下面这些针对性的方案:
对比VS Code和iTerm的环境变量
先在iTerm和VS Code的zsh终端里分别运行echo $PATH和echo $DYLD_LIBRARY_PATH,看看VS Code的终端是不是少了/usr/local/bin或者/usr/local/opt/icu4c/lib这两个路径。如果确实缺少,说明VS Code没有加载完整的shell配置。让VS Code终端以登录shell启动
打开VS Code设置,搜索terminal.integrated.profiles.osx,把zsh的配置改成带-l参数(登录shell会加载完整的~/.zshrc或~/.profile):"terminal.integrated.profiles.osx": { "zsh": { "path": "/bin/zsh", "args": ["-l"] } }, "terminal.integrated.defaultProfile.osx": "zsh"改完后完全关闭VS Code再重新打开,试试node命令。
重新链接icu4c并重装Node
有时候brew升级后库的链接会失效,运行下面的命令强制重新链接并重装Node:brew unlink icu4c && brew link icu4c --force brew reinstall node重置VS Code的终端缓存
有时候VS Code会缓存旧的环境数据,完全退出VS Code(包括所有窗口,不要只最小化),然后重启电脑再打开VS Code,很多时候这种“笨办法”能解决缓存导致的路径问题。手动指定DYLD_LIBRARY_PATH(临时方案)
如果上面的方法都不行,可以在VS Code的设置里手动添加环境变量,让终端能找到icu4c的库:"terminal.integrated.env.osx": { "DYLD_LIBRARY_PATH": "/usr/local/opt/icu4c/lib:$DYLD_LIBRARY_PATH" }不过这个是临时方案,优先解决环境配置加载的问题更彻底。
内容的提问来源于stack exchange,提问作者jaanhio

