Visual studio code 集成终端缺少nvm、节点等路径
我使用的是OSX High Sierra上iTerm2内部的ohmyzsh insiders edition和zsh 如果我在VSCodeVisual studio code 集成终端缺少nvm、节点等路径,visual-studio-code,Visual Studio Code,我使用的是OSX High Sierra上iTerm2内部的ohmyzsh insiders edition和zsh 如果我在VSCodeecho$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/
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\u helper
设置路径,因此它忽略了我开发所需的所有重要路径
我怀疑大多数人更喜欢使用他们的用户配置文件中的设置。这意味着我们所有的开发应用程序都可以在集成终端上运行,而且臭名昭著的nvm的结尾与npm配置“prefix”选项不兼容,这是由于路径设置不当造成的
从Dock启动时,如何让VSCode在我的用户配置文件中使用终端环境?转到设置并编辑集成终端
// 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": {},
您可以在那里传入变量vscode文档还为警告nvm与npm配置“前缀”选项不兼容提供了解决方案:当前设置为“/usr/local”
:
从文档中:
这主要是一个macOS问题,在外部环境中不会发生
终端。其典型原因如下:
npm
是使用另一个node
实例全局安装的,该实例是
路径中的某个位置(例如/usr/local/bin/npm
)。为了得到
$PATH
上的开发工具将启动bash登录
壳牌公司正在启动。这意味着您的~/.bash\u配置文件已经
运行,当一个集成终端启动时,它将运行另一个
登录shell,可能以意外的方式重新排列$PATH
。到
要解决此问题,您需要跟踪旧的npm
在哪里
安装并卸下它及其过期的节点_模块。你可以
通过查找nvm
初始化脚本并运行哪个npm
在它运行之前,当您启动新的
终点站
一旦找到npm的路径,就可以通过
通过运行如下命令解析符号链接:
ls-la/usr/local/bin | grep npm
这将在最后为您提供解析的路径:
。。。npm->../lib/node_modules/npm/bin/npm cli.js
从这里开始,删除文件并重新启动VS代码应该可以解决问题:
rm-R/usr/local/bin/npm/usr/local/lib/node_modules/npm/bin/npm cli.js
这在某种程度上是可行的,但如果我们能有terminal.integrated.env.useUserEnv
,那就太好了。管道之所以存在,是因为我们在从命令行启动它时实际上就是这样做的。您是否尝试将其添加到用户设置“terminal.explorerKind”:“external”?“terminal.explorerKind”仅确定资源管理器中的右键单击上下文菜单将启动集成终端还是外部终端。我还是想用集成终端。。。不过,我确实感到有人提出拉车请求;)