Порожденный Узел (.exe) процесс не поймать stderr сообщения

Так что у меня возникли некоторые проблемы с узлом и процессами нереста здесь..

Я порождаю внешний процесс exe как таковой:

            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();
                }
            });

Проблема в том, что этот код по какой-то причине ловит только stdout процесса.. Все, что выводится через stderr, не доходит до слушателя.

Я знаю, что есть вывод stderr, потому что, когда я выполняю ту же команду через командную строку и прикрепляю

> stdout.txt 2> stderr.txt

чтобы перенаправить оба потока в текстовый файл, я получаю сообщения в обоих моих stderr.txt и stdout.формат txt

Есть ли у кого-нибудь идеи, почему прослушиватель stderr не получает эти сообщения в моем коде JS ?

1 ответ

  1. Итак, я наконец нашел решение..

    Приложение представляет собой приложение на основе QT C++ со следующим поведением:

    Где находится журнал qDebug qWarning qCritical и qfatal по умолчанию на Qt?

    Вкратце: установив значение QT_LOGGING_TO_CONSOLE1перед запуском узла, он будет зарегистрирован правильно.