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

时间:2016-09-21 06:50:49

标签: javascript node.js node-cluster node-debugger

我正在尝试使用本机节点调试器调试节点子进程。例如,见repo

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

非这些选项对我有用..

这是我的示例代码:

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}`);
});

child.js:

debugger;
const a = 123;

console.log(a);
然后我跑了:

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

我在Chrome中打开chrome-devtools://devtools/...。调试主进程效果很好,我也看到了子进程输出。只有不起作用的是子过程的调试...

我在这里做错了什么?

1 个答案:

答案 0 :(得分:6)

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

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

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

您可以看到一个有效的示例here

相关问题