【问题标题】:cannot debug node child process (using node native debugger)无法调试节点子进程(使用节点本机调试器)
【发布时间】:2017-01-29 06:40:01
【问题描述】:

我正在尝试使用本机节点调试器调试节点子进程。例如,请参阅此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/...。调试主进程效果很好,我也看到了子进程输出。唯一不起作用的是调试子进程...

我在这里做错了什么?

【问题讨论】:

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


    【解决方案1】:

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

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

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

    您可以看到一个工作示例here

    【讨论】:

      猜你喜欢
      • 2015-08-18
      • 2019-05-02
      • 2019-03-15
      • 2019-05-06
      • 1970-01-01
      • 2014-10-28
      • 2015-07-16
      • 2018-02-22
      • 2014-04-04
      相关资源
      最近更新 更多