在IntelliJ IDEA上debuggingnode.js child_process分叉示例

我想从这里使用IntelliJ IDEA 12.1.3和节点10.10debuggingchild_process 示例 。 当我从terminal运行nodejs app.js ,一切正常。 控制台输出按预期显示。 但是,当我使用IDEAdebugging相同的脚本时,控制台输出中没有消息,应用程序就在那里。 这是控制台窗口中的内容:

 /usr/bin/nodejs --debug-brk=58954 app.js debugger listening on port 58954 debugger listening on port 58954 

当我在没有附加debugging器的情况下在IDEA中运行脚本时,脚本按预期工作。

为什么附加debugging器会破坏脚本?

看起来像node.js中的一个bug fork给我:父进程和subprocess都接收--debug-brk=58954开关,并尝试启动debugging器并监听端口58954。

你可以强迫孩子们使用一个空闲的端口进行debugging。 InteliJ将自动提取由subprocessselect的端口。

这是一个例子:

 // Determine if in debug mode. // If so, pass in a debug-brk option manually, without specifying port. var startOpts = {}; var isInDebugMode = typeof v8debug === 'object'; if(isInDebugMode) { startOpts = {execArgv: ['--debug-brk']}; } child_process.fork('./some_module.js', startArgs, startOpts);