无法调试节点子进程(使用节点本机调试器)

Yan*_*aim 3 javascript node.js node-debugger node-cluster

我正在尝试使用本机节点调试器调试节点子进程.例如,请参阅此回购.

我尝试了所有选项之王,根据:debug1,debug1,debug3(以及我在网上找到的很多其他参考资料).

没有那些选项对我有用..

这是我的示例代码:

index.js:

const spawn = require('child_process').spawn;
const path = require('path');

const ls = spawn('node', [path.resolve('./child.js')], {execArgv: '--debug-brk=4545'});

ls.stdout.on('data', (data) => {
  console.log(`stdout: ${data}`);
});

ls.stderr.on('data', (data) => {
  console.log(`stderr: ${data}`);
});

ls.on('close', (code) => {
  console.log(`child process exited with code ${code}`);
});
Run Code Online (Sandbox Code Playgroud)

child.js:

debugger;
const a = 123;

console.log(a);
Run Code Online (Sandbox Code Playgroud)

然后我跑:

node --debug-brk --inspect=9222 index.js

我打开chrome-devtools://devtools/...镀铬.调试主进程效果很好,我也看到了子进程输出.唯一不起作用的是子过程的调试...

我在这做错了什么?

Yan*_*aim 6

回答我自己的问题,以防万一有人会遇到和我一样的问题.根据这个问题,解决方案是:

const file = path.resolve('./child.js');
const args = ['--inspect=9228', '--debug-brk', file];
const ls = spawn('node', args);
Run Code Online (Sandbox Code Playgroud)

你必须打开chrome-devtools://devtools/...9222端口+一个新的子进程检查窗口,在端口上9228(因为这是我在这个例子中添加的端口)

你可以在这里看到一个有效的例子