我正在尝试调试使用以下方法创建的子Node.JS进程:
var child = require('child_process'); child .fork(__dirname + '/task.js');
问题是,在IntelliJ / WebStorm中运行时,父进程和子进程都在同一端口上启动。
debugger listening on port 40893 debugger listening on port 40893
因此,它仅调试父进程。
有什么方法可以设置IntelliJ来调试子进程或强制其在其他端口上启动,以便我可以在远程调试中进行连接?
这是node.js中一个已知的错误,该错误最近已得到修复(尽管未反向移植到v0.10)。
有关更多详细信息,请参见此问题:https : //github.com/joyent/node/issues/5318
有一种解决方法,您可以更改每个工作进程的命令行,尽管并不是要以此方式使用API(该解决方法将来可能会停止工作)。这是来自github问题的源代码:
var cluster = require('cluster'); var http = require('http'); if (cluster.isMaster) { var debug = process.execArgv.indexOf('--debug') !== -1; cluster.setupMaster({ execArgv: process.execArgv.filter(function(s) { return s !== '--debug' }) }); for (var i = 0; i < 2; ++i) { if (debug) cluster.settings.execArgv.push('--debug=' + (5859 + i)); cluster.fork(); if (debug) cluster.settings.execArgv.pop(); } } else { var server = http.createServer(function(req, res) { res.end('OK'); }); server.listen(8000); }