VS Code是否可以使用NVM指定的Node版本?
我已经在本地安装了6.9.2版本。即使从OS X终端(而非VS Code终端)切换到另一个版本,重新启动VS Code,VS Code仍然显示使用6.9.2。
OS X终端
MacBook-Pro-3:~ mac$ node -v
v7.8.0
VS Code 终端
MacBook-Pro-3:QB-Invoice-API mac$ node -v
v6.9.2
VS Code是否可以使用NVM指定的Node版本?
我已经在本地安装了6.9.2版本。即使从OS X终端(而非VS Code终端)切换到另一个版本,重新启动VS Code,VS Code仍然显示使用6.9.2。
OS X终端
MacBook-Pro-3:~ mac$ node -v
v7.8.0
VS Code 终端
MacBook-Pro-3:QB-Invoice-API mac$ node -v
v6.9.2
解决方法是设置别名为default
。在操作系统终端中运行 -
nvm alias default 7.8.0
打开VS Code,现在运行node -v
,将返回7.8.0
。
看起来VS Code使用了这个(别名默认)值而不是通过nvm use X.X.X
设置的节点版本。
重新启动VS Code以使其拾取更改。
在VS Code中:
launch.json
文件runtimeVersion
属性在这个例子中,我们假设已经使用nvm安装了4.8.7:
{
"version": "<some-version>",
"configurations": [
{
"type": "node",
"runtimeVersion": "4.8.7", // If i need to run node 4.8.7
"request": "launch",
"name": "Launch",
"program": "${workspaceFolder}/sample.js"
}
]}
launch.json
文件在哪里? - Petrus Theron在您的 .vscode/launch.json
文件中添加 runtimeExecutable
,如下所示:
{
"type": "node",
"request": "launch",
"name": "App",
"program": "${workspaceRoot}/index.js",
"runtimeExecutable": "${env:HOME}/.nvm/versions/node/v6.9.2/bin/node"
}
launch.json
文件吗? - Kiong有些答案是正确的,并且已经得到了赞同,但有些不完整。以下过程对我来说有效:
node -v
。例如,您会得到v10.12.0
。nvm use v12.14.0
)Cmd
+Shift
+p
,选择首选项>打开设置(JSON)"terminal.integrated.shellArgs.osx": []
添加到您的用户配置中Cmd
+Shift
+p
,选择Shell Command:在PATH中安装'code'命令code
。这将使用新的和更新的bash
/zsh
会话打开VS Code。node -v
。您将得到v12.14.0
。奖励:如果您想要在VS Code的终端上始终获得特定的node版本,请通过在VS Code外部打开终端窗口并运行以下命令将其设置为默认值:
nvm alias default v12.14.0
我在我的OS X环境中使用nvm指定node版本时,不仅在VSCode中遇到了同样的问题,而且在Atom编辑器中也遇到了这个问题(使用platformio-ide-terminal包来管理集成终端)。除了我没有使用调试器而是使用gulp和grunt执行特定任务之外,先前答案中的建议都对我无效。显然,在这些编辑器中,nvm与集成终端或子shell不兼容,因为在加载它们时,环境变量$PATH在内部被修改,并根据此包的一个贡献者在此问题报告NVM fails to load within nested shell #1652中的评论所述,会发生以下情况:
"@charsleysa我知道为什么nvm会抛出这个错误。在你的子shell中,一些路径已经从PATH的末尾移动到了开头。
- 然后,当nvm启动时,它调用nvm_change_path(我的贡献将其从nvm_prepend_path更改为此),并直接修改nvm相关部分的路径。
在父Shell中,PATH还没有nvm dir,因此当nvm运行时,它将其目录添加到路径中。但是在子Shell中,PATH已被macOS重新配置为将任何非系统目录放在最后,这就是我们遇到问题的原因。
每次启动任何集成终端时,我总是收到此消息:
nvm 与 npm 配置项 "prefix" 不兼容: 当前设置为 "/usr/local"
运行 npm config delete prefix
或 nvm use --delete-prefix vx.x.x --silent
取消设置。
在我的情况下,我采用了同样问题报告中的“解决方法”部分,即通过在任何其他内容之前在我的~/.bash_profile
中添加以下行来重置路径:
PATH="/usr/local/bin:$(getconf PATH)"
之后,当我在两个编辑器上启动任何集成终端时,就不会再出现警告了,我可以与 nvm 交互,轻松地切换任何节点版本,而且完全没有问题。
这里还有另一种选择,以防这个方法不太有效。
我正在使用oh-my-zsh,但它没有使用nvm指定的Node版本。尝试了这里发布的几个建议,但我解决这个问题的唯一方法是在~/.zshrc
的顶部添加以下行:
PATH="/usr/local/bin:$(getconf PATH)"
我曾经遇到过相同的问题,但以上的回答都没有帮助。
显然,osx 的默认 shellArgs
设置为 bash
,而我使用的是 zsh
。通过在我的用户设置中将 shellArgs
设置为空数组,我成功解决了这个问题:
"terminal.integrated.shellArgs.osx": []
which node
与 cli 不同且与 vscode 不同,那么这就是您的解决方案! - manelescuernvm use default
命令解决了问题。谢谢! - Richard Morgannpm use
直接从项目目录打开VSCode解决了我的问题。非常感谢! - Igor Skobelev这里有很多复杂的答案。在我的情况下,这是由于之前安装了Node引起的。通过删除以下目录来解决:
rm -rf /usr/local/bin/npm
rm -rf /usr/local/bin/node
nvm use default
命令,以使用 nvm 安装的 Node 版本。我遇到了同样的问题,但我找到了一种奇怪的解决方法,可能会对以后的某个人有所帮助。
如果我不设置eslint.runtime
,则我的系统将在运行ESLint服务器时使用Node v10.11.0
,而我想要它使用我通过nvm
安装并设置为默认版本的v12.13.0
。
我发现用brew
安装的是Node的v10版本,这是基于@franziga的答案,但我想要的版本是通过nvm
安装的。因此,我通过brew卸载了v10.11.0
,然后关闭/重新打开了VS Code。奇怪的是,ESLint仍然报告它是使用v10启动的。
我尝试在没有更改任何启动脚本中的PATH
的情况下运行shell,预期的Node版本仍然正确地指向了v12,但是VS Code仍然会为ESLint启动v10。
我不确定如何检查由ESLint运行的可执行文件的路径,如果我打开终端,一切都可以正常工作,并且使用预期的Node版本(v12)。
我发现如果我在settings.json
中设置"eslint.runtime": "node"
,它将使用我在终端上使用code .
打开VS Code时处于活动状态的node
版本。只需"node"
- 没有路径。
node
。 - Marc