我在OSX High Sierra的iTerm2中使用内部版本和zsh与ohmyzsh。
如果我在VSCode echo $path
中启动集成命令行,则返回:
/Users/username/.yarn/bin:/Users/username/.cargo/bin:/usr/bin:/usr/bin/lldb:
/Users/username/bin:/usr/local/bin:/Users/username/.scripts:
/usr/local/bin:/usr/bin:/bin:/usr/sbin:/sbin:/opt/X11/bin
显然,节点路径,nvm路径等都丢失了,所以终端对我没什么用。
但是在VSCode之外的终端中键入echo $path
会返回:
/Users/username/.nvm/versions/node/v9.0.0/bin /Users/username/.yarn/bin
/Users/username/.cargo/bin /usr/bin /usr/bin/lldb /Users/username/bin
/usr/local/bin /Users/username/.scripts /usr/local/bin /usr/bin /bin /usr/sbin
/sbin /opt/X11/bin
我的开发活动需要所有路径。
我在~/.zshrc
:
code () { VSCODE_CWD="$PWD" open -n -b "com.microsoft.VSCodeInsiders" --args $* ;}
如果我使用来自外部终端的别名启动代码,则节点路径是正确的。
据我所知,这是因为从Dock快捷方式加载代码并不会使用我的用户配置文件加载终端,因此它会从/etc/zprofile
加载配置文件,而使用{/usr/libexec/path_helper
设置路径1}}所以它错过了我开发所需的所有重要路径。
我怀疑大多数人都希望使用其用户个人资料中的设置。这意味着我们所有的开发应用程序都可以在集成终端上运行,也可以通过不正确的路径设置导致臭名昭着的nvm is not compatible with the npm config "prefix" option
错误结束。
从Dock启动时,如何让VSCode在我的用户配置文件中使用终端环境?
答案 0 :(得分:0)
转到设置并编辑集成终端
// Object with environment variables that will be added to the VS Code process to be used by the terminal on OS X
"terminal.integrated.env.osx": {},
你可以传入你的变量
答案 1 :(得分:0)
vscode文档还提供了针对警告nvm is not compatible with the npm config "prefix" option: currently set to "/usr/local"
的解决方案:
从文档中
这主要是macOS问题,不会在外部发生 终端。造成这种情况的典型原因如下:
npm
是使用node
的另一个实例进行全局安装的,该实例是 路径中的某处(例如/usr/local/bin/npm
)。为了得到$PATH
上的开发工具,VS Code将启动bash登录 外壳启动。这意味着您的~/.bash_profile
已经 运行,当集成终端启动时,它将运行另一个 登录外壳程序,可能以意外的方式对$PATH
进行重新排序。至 要解决此问题,您需要跟踪旧的npm
在哪里 安装并删除它及其过时的node_modules。您可以 为此,请找到nvm
初始化脚本并运行which npm
在它运行之前,它应该在您启动新路径时打印路径 终端。一旦有了npm的路径,就可以通过以下方式找到旧的node_modules 通过运行类似以下的命令来解决符号链接:
ls -la /usr/local/bin | grep npm
这将为您提供最后的解析路径:
... npm -> ../lib/node_modules/npm/bin/npm-cli.js
从那里删除文件并重新启动VS Code应该可以解决此问题:
rm -R /usr/local/bin/npm /usr/local/lib/node_modules/npm/bin/npm-cli.js