我正在尝试使用nodeJS控制服务器。我可以使用nodeJS正确停止和启动服务器,但有时,由于某些意外错误,服务器可能无法启动。这些错误将输出到控制台。基于这些错误,我想执行各种各样的事情。为了得到这些错误,我使用了spawn函数,如下所示:
spawn('./startEngine.sh &> test.txt',[] , options);
但我似乎得到了ENOENT错误
Error: spawn ./startEngine.sh &> test.txt ENOENT
at exports._errnoException (util.js:1026:11)
at Process.ChildProcess._handle.onexit (internal/child_process.js:193:32)
at onErrorNT (internal/child_process.js:359:16)
at _combinedTickCallback (internal/process/next_tick.js:74:11)
at process._tickCallback (internal/process/next_tick.js:98:9)
我还尝试将'output to file'选项包含为spawn函数的args,但是当我这样做时,它似乎完全忽略它并输出到控制台。
spawn('./startEngine.sh',['&>', 'test.txt'] , options);
我应该采用不同的方式做某些事情,如果没有,那么还有其他方法可以将进程的输出转换为文本文件吗?提前谢谢你!
答案 0 :(得分:1)
你可以听stdout和stderr并自己编写文件......
const child = spawn('./startEngine.sh',[] , options);
const ws = fs.createWriteStream('test.txt');
child.stdout.on('data', data => {
ws.write(data);
});
child.stderr.on('data', data => {
ws.write(`stderr: ${data}`);
});
child.on('close', code => {
ws.write(`process exited with code ${code}`);
ws.end();
});
child.on('error', err => {
ws.write('error encountered', err.message);
console.dir(err);
});