所以我在这里遇到Node和产生进程的问题..
我正在产生一个外部exe进程:
clipTo
问题是这段代码只是出于某种原因捕获了进程的标准输出。通过stderr输出的所有东西都没有到达监听器。
我知道有stderr输出,因为当我在命令行上运行相同的命令并附加
时 var writeStream = fs.createWriteStream(logPath);
writeStream.write(new Date().toString() + " : " + type + " : LOG STARTED ");
var process = cp.spawn(fileNameExecutable, paramArray, {
cwd: pathToExecutable
});
process.stdout.on('data', function (data) {
writeStream.write(new Date().toString() + " : " + type + " stdout : " + string);
});
var errorLog = "";
process.stderr.on('data', function (data) {
errorLog += data;
writeStream.write(new Date().toString() + " : " + type + " stderr : " + data );
});
process.on("exit", function (exitcode) {
if (exitcode === 1) {
done(new Error(errorLog));
} else {
done();
}
});
将两个流重定向到文本文件,我在stderr.txt和stdout.txt中都收到消息
有没有人知道为什么stderr监听器没有在我的JS代码中获取这些消息?
答案 0 :(得分:0)
好的,所以我终于找到了解决方案..
该应用程序是基于QT的C ++应用程序,具有以下行为:
Where is located the qDebug qWarning qCritical and qFatal log by default on Qt?
简而言之:通过在节点启动之前将QT_LOGGING_TO_CONSOLE
设置为1
,它会被正确记录。