在VS Code调试器中使用旧版本的节点

时间:2017-07-24 13:50:55

标签: node.js visual-studio-code keystonejs

我将VS Code更新为1.14.2并尝试运行需要Node 6.x的应用程序。在此更新之前,我使用的配置工作正常:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${workspaceRoot}/keystone.js"
        },
        {
            "type": "node",
            "request": "attach",
            "name": "Attach to Port",
            "address": "localhost",
            "port": 5858
        }
    ]
}

现在,当我执行程序时,它只是挂起而没有启动(预计当我运行Node 7.x或更高版本时)。此外,它提供了以下消息,我不确定是否相关:

使用检查程序协议进行调试,因为检测到Node.js v8.2.1。

node --inspect = 38743 --debug-brk keystone.js

监听ws://127.0.0.1的调试器:38743 / d4a20480-3a0f-4aa7-8882-aec756edd6da 附加调试器。

我使用nvm来管理我的Node版本,而nvm list提供了以下内容(如您所见,我已经默认使用了6.11.0别名):

$ nvm list
->      v6.11.0
         v8.0.0
         system
default -> 6.11.0 (-> v6.11.0)
node -> stable (-> v8.0.0) (default)
stable -> 8.0 (-> v8.0.0) (default)
iojs -> N/A (default)
lts/* -> lts/boron (-> N/A)
lts/argon -> v4.8.4 (-> N/A)
lts/boron -> v6.11.1 (-> N/A)

我假设它没有因为尝试使用错误的Node版本而执行,任何帮助解决这个问题都将非常感激。

1 个答案:

答案 0 :(得分:0)

不确定哪个版本的VS Code引入了此选项(我使用的是版本1.17.2),但在launch.json中,我们可以明确指定要使用的调试协议。

因此,要强制VS代码使用legacy协议,请添加"protocol": "legacy"

您的launch.json已更新为包含该密钥:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "program": "${workspaceRoot}/keystone.js"
        },
        {
            "type": "node",
            "request": "attach",
            "name": "Attach to Port",
            "address": "localhost",
            "port": 5858,
            "protocol": "legacy"
        }
    ]
}