在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" } ] }