首页 文章

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

提问于
浏览
2

我将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或更高版本时) . 此外,它提供以下消息,我不确定是否相关:

Debugging with inspector protocol because Node.js v8.2.1 was detected.

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

Debugger listening on ws://127.0.0.1:38743/d4a20480-3a0f-4aa7-8882-aec756edd6da Debugger attached.

我正在使用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

    不确定哪个版本的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"
            }
        ]
    }
    

相关问题