Spawned Node(.exe)进程不会捕获stderr消息

时间:2016-09-30 09:08:16

标签: node.js process stdout stderr spawn

所以我在这里遇到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代码中获取这些消息?

1 个答案:

答案 0 :(得分:0)

好的,所以我终于找到了解决方案..

该应用程序是基于QT的C ++应用程序,具有以下行为:

Where is located the qDebug qWarning qCritical and qFatal log by default on Qt?

简而言之:通过在节点启动之前将QT_LOGGING_TO_CONSOLE设置为1,它会被正确记录。