无法使用WebSocket连接到node.js检查器

问题描述 投票:2回答:1

我正在尝试在JavaScript中开发node.js调试器。我正在使用node --inspect-brk执行一个JS脚本,如下所示 -

c:\node\node --inspect-brk test.js

然后它打印WebSocket URL-

Debugger listening on ws://127.0.0.1:9229/bb6eed9d-19d4-47ae-99cf-2f2a09e125ef
For help see https://nodejs.org/en/docs/inspector

现在我正在使用WebSocket连接 -

var ws = new WebSocket("ws://127.0.0.1:9229/bb6eed9d-19d4-47ae-99cf-2f2a09e125ef");
ws.onmessage = function(data){console.log(data);}
ws.onerror = function(data){console.log(data);}

但是,当我发送continue命令时,我没有得到V8的响应 -

ws.send(JSON.stringify({"seq":117,"type":"request","command":"continue"}));

我在这里找到了V8协议的命令 - https://github.com/buggerjs/bugger-v8-client/blob/master/PROTOCOL.md

事实上ws.readyState是1,这意味着连接得到了正确的建立。没有记录错误或消息。即使在chrome网络标签中,我也可以看到已发送的数据但是没有从V8收到的数据,请参见截图。

Network log

测试JS代码 -

var x=1;
x++;
console.log(x);
node.js v8 node-inspector
1个回答
2
投票

尝试发送此消息:{"id": 7, "method": "Runtime.runIfWaitingForDebugger"};

我认为问题可能是参数“-brk”阻塞了nodejs进程。所以当你发送消息时,它无法获得响应。但是当你打开chrome来调试它时,你发现它运行良好。所以,打开chrome devtool并检查ws网络信息。我发现ws在构建时会发送一些消息。也许当您发送消息:“Runtime.runIfWaitingForDebugger”时,nodejs进程将继续运行。

shell.js

ws network

© www.soinside.com 2019 - 2024. All rights reserved.