2016-09-21 90 views
1

我正在尝试使用本地节点调试程序来调试节点子进程。例如,请参阅此repo无法调试节点子进程(使用节点本机调试器)

我试过所有的选项王,根据:debug1debug1,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}`); 
}); 

child.js:

debugger; 
const a = 123; 

console.log(a); 

我然后运行:

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

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

我在做什么错在这里?

回答

4

回答我自己的问题,以防万一有人会遇到同样的问题。根据这一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