node.js-Visual Studio Code使用NVM指定的节点版本

VS Code是否可以使用NVM指定的节点版本?

我在本地安装了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
Aseem Gautam asked 2020-07-31T19:54:07Z
11个解决方案
45 votes

在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"
    }
]}
Sm Srikanth answered 2020-07-31T19:59:14Z
36 votes

像这样将runtimeExecutable添加到您的.vscode/launch.json

{
  "type": "node",
  "request": "launch",
  "name": "App",
  "program": "${workspaceRoot}/index.js",
  "runtimeExecutable": "${env:HOME}/.nvm/versions/node/v6.9.2/bin/node"
}
Alongkorn Chetasumon answered 2020-07-31T19:59:34Z
36 votes

解决方案是设置别名nvm use X.X.X。在OS终端中运行-

nvm use X.X.X

打开vscode,现在运行nvm use X.X.X返回7.8.0

似乎vscode占用了此(别名默认值)值,而不是nvm use X.X.X设置的节点版本

更新(12/04/2018)-此解决方案可能不适用于所有人。 请参阅以下答案以了解其他解决方案。

Aseem Gautam answered 2020-07-31T20:00:07Z
29 votes

我遇到了同样的问题,即不仅无法通过VSCode,而且无法通过Atom Editor(使用platformio-ide-terminal软件包在其中管理集成终端)在OS X环境中通过nvm来指定节点版本。 以前的答案中的任何建议对我都不起作用,除了我不使用调试器,而是对特定任务使用gulp和grunt。 显然,至少在这些编辑器中,nvm不会与集成终端或子外壳相处,因为在加载它们时,环境变量$ PATH在内部进行了修改,并且根据此软件包的其中一位撰稿人在本期报道中的评论进行了以下操作 此处NVM无法在嵌套外壳#1652中加载:

“ @charsleysa,我知道nvm为什么会引发此错误。在您的子Shell中,您路径的/ usr / local / bin:/ usr / bin:/ bin:/ usr / sbin:/ sbin部分已经从末尾移出 路径的起点。

  • 然后启动nvm时,它将调用nvm_change_path(我的贡献将其从nvm_prepend_path更改为nvm),这将修改路径中与nvm相关的部分。
  • 然后,Nvm通过询问npm是什么来检查当前npm前缀。 由于/ usr / local / bin / npm现在具有优先权,因此它将报告/ usr / local / bin。
  • 然后,Nvm检查npm报告的当前前缀是否在当前nvm节点版本的目录树中(在此阶段,默认nvm别名解析为该节点版本的安装目录)。
  • 前缀不是该树的一部分,因此它会自行停用(在此过程中调用nvm_strip_path,这就是为什么子外壳程序的PATH中没有与nvm相关的路径的原因),并因收到的错误而失败。 macOS的/ etc / profile(或/ etc / zprofile)调用/ usr / libexec / path_helper,它执行PATH切换。

在父外壳程序中,PATH中还没有nvm目录,因此在nvm运行时,它将目录放置在路径之前。 但是在子外壳中,macOS重新配置了PATH,以将所有非系统目录放在最后,因此我们遇到了问题。”

启动任何集成终端时,我总是收到以下消息:

nvm与npm config的“ prefix”选项不兼容:当前设置为“ / usr / local”运行npm config delete prefixnvm use --delete-prefix vx.x.x --silent取消设置。

在我的案例中,我要解决的问题是所报告的同一问题的“替代方法”部分,基本上是以下内容:

  • 通过在我的〜/ .bash_profile顶部的第一行之前添加以下行来重置路径:PATH =“ / usr / local / bin:$(getconf PATH)”

之后,当我在两个编辑器上都启动任何集成终端时,便不再发出警告,并且可以与nvm进行交互,从而轻松地在任何节点版本之间切换,并且完全没有问题。

在这里,这是另一种选择,以防万一。

Charlyboy answered 2020-07-31T20:01:23Z
17 votes

我遇到了同样的问题,但是上述答案没有帮助。

当我使用zsh时,显然osx的默认"terminal.integrated.shellArgs.osx": []设置为bash。我通过在用户设置中将shellArgs设置为空数组来解决了这个问题:

"terminal.integrated.shellArgs.osx": []

Skeevs answered 2020-07-31T20:01:47Z
9 votes

我发现的另一种解决方案是在使用nvm选择节点后,仅从外壳中启动代码。

您需要先打开命令面板,然后选择“安装'代码'路径”。

enter image description here

然后启动一个终端,并通过nvm选择您的节点,然后启动“代码”。

enter image description here

jr. answered 2020-07-31T20:02:16Z
7 votes

我正在使用oh-my-zsh,它也没有使用nvm指定的节点版本。 尝试了一些在此处发布的建议,但我设法解决此问题的唯一方法是在~/.zshrc的顶部添加以下行

PATH="/usr/local/bin:$(getconf PATH)"
BlueTabasco answered 2020-07-31T20:02:37Z
2 votes

我尝试了所有建议的解决方案,但没有任何效果。

/ usr / local / bin / node指向某个地方。 我建立了到特定nvm节点文件夹的符号链接,这为我解决了这个问题:

ln -s /Users/mad/.nvm/versions/node/v11.1.0/bin/node /usr/local/bin/node
madflanderz answered 2020-07-31T20:05:44Z
1 votes

特别是对于外壳,我没有任何问题,但是您可以:

  • 检查您的外壳是否已正确配置或更改(您可能对vscode或终端使用了不同的外壳)
  • 检查您的环境,如果设置不正确,请使用$0

我对vscode本身有疑问,没有解决方案可以帮助我。 因此,我完成了以下启动脚本的使用。

    {
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${workspaceFolder}/server.js",
        "runtimeExecutable": "/bin/bash",
        "runtimeArgs": ["-c", ". ~/.nvm/nvm.sh;nvm run default \"$@\"", "dummy"]
    },

假设您已将其配置为bash(否则将其更改为shell),并且要使用nvm配置的$0节点版本(也可以更改它)。

注意:“ dummy”参数是必需的,因此可以正确解析其余参数。

关于“虚拟”的更详细的解释:Shell脚本使用位置参数,其中第一个将是脚本位置本身(地址为$0),当使用-c标志时,脚本被就地读取,而没有设置$0。 vscode将传递一些参数,例如节点启动脚本的位置将被错误地解释,因此“虚拟”将所有参数推到一个位置。 它可以是任何东西,但必须存在。

estani answered 2020-07-31T20:06:31Z
0 votes

我有同样的问题,我发现brewnvm安装了node。我卸载了brew安装的node,并且终端和Visual Studio代码上的版本现在都相同。

franziga answered 2020-07-31T20:06:51Z
0 votes

没有尝试所有解决方案,但是对我来说,更新nvm完全可以。

只需按照此处的安装进行操作,并确保您更新了bash_profile

michelepatrassi answered 2020-07-31T20:07:16Z
translate from https://stackoverflow.com:/questions/44700432/visual-studio-code-to-use-node-version-specified-by-nvm