我在Windows上运行了两个NodeJS服务器,一个侦听传入的请求,然后对请求进行整形,然后将请求交给工作服务器。工作服务器将从控制器获取输入并执行多个功能:使用DB记录事件,shell out以通过子进程执行操作,评估结果并最终将结果返回给控制器。
当我通过Powershell或cmd运行这两个进程时,一切运行正常。如果我将Controller作为NSSM服务和Powershell上的Worker运行一切正常。但是,如果我将作为服务的工作服务器与NSSM一起运行,则子进程失败(console.logs或使用类似bunyon的东西似乎被吞没,因此调试很困难)。如果需要执行子进程,有没有办法将NodeJS作为服务器运行?
答案 0 :(得分:0)
如果我理解正确,您可以尝试使用
重定向工作人员的stdout
和stderr
信息流
var fs = require('fs'),
spawn = require('child_process').spawn,
out = fs.openSync('./out.log', 'a'),
err = fs.openSync('./out.log', 'a');
var child = spawn('prg', [], {
detached: true,
stdio: [ 'ignore', out, err ]
});
child.unref();
这种方式在产生时,我们给工作进程一个fd
来将输出写入文件。