在VS Codedebugging器中使用旧版本的节点

我将VS Code更新为1.14.2,并试图运行需要Node 6.x的应用程序。 在此更新之前,我使用的configuration工作得很好:

{ "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,因为检测到Node.js v8.2.1。

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

在ws://127.0.0.1:38743 / d4a20480-3a0f-4aa7-8882-aec756edd6dadebugging器上侦听附加的debugging器。

我正在使用nvm来pipe理我的节点版本, 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) 

我假设它没有执行,因为试图使用错误版本的节点,任何帮助搞清楚这将不胜感激。

不知道哪个版本的VS代码引入了这个选项(我使用的是版本1.17.2),但在launch.json ,我们可以明确指定使用哪个debugging协议。

因此,要强制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" } ] }