Как извлечь ошибку из stderr в nodejs childprocess - PullRequest
0 голосов
/ 12 января 2020

Мне не удалось найти ответ в Google или других местах, надеюсь, вы мне поможете.

У меня есть приложение nodejs, которое вызывает исполняемый файл (.exe), который иногда не удается , Мой код следующий:

const converter = childProcess.spawn('converter.exe', [source, destination], options);
converter.stdout.on('data', (data) => {

});
converter.on('close', (code) => {
    console.log(`Child process exited with code ${code}`);
});
converter.stderr.on('data', (data) => {

});

Все работает хорошо, но когда я получаю stderr, я не знаю, как получить сообщение, я зарегистрировал данные и получил это: stderr: enter image description here

Я могу получить строку с помощью .toString (), строка выглядит следующим образом:

stderr:  Traceback (most recent call last):
  File "converter.pyw", line 23, in <module>
    doc = word.Documents.Open(source_file)
_ctypes.COMError: (-2146822496, None, ('El archivo parece estar corrompido.', 'Microsoft Word', 'wdmain11.chm', 25272, None))

Теперь я сомневаюсь, можно ли извлечь только сообщение об ошибке? В этом случае сообщение об ошибке будет El archivo parece estar corrompido.

Я даже пытался использовать JSON объект для его анализа, но мне не повезло.

Редактировать: Поскольку я управляю генерацией exe-файла, я попытаюсь использовать некоторую попытку, кроме блоков кода (да, это python код), но я не знаю, буду ли я все еще получаю текст как sterr: Traceback ... я отредактирую этот вопрос, как только получу результаты.

1 Ответ

0 голосов
/ 12 января 2020

Как я ожидал с самого начала, нет встроенного метода для извлечения метода для ошибок, которые я получаю из моего exe-файла, ошибка - это строка, которую можно обработать, чтобы получить сообщение об ошибке, но это может быть сложно. ,

Я попытался использовать попытку, кроме блока, в моем python коде, который позже скомпилирован в исполняемый файл, он выглядит примерно так:

try:

except:
    sys.stderr.write('Error')

Теперь вывод в моей функции обработки ошибок is:

Error

Я думаю, что в конце концов ответ заключается в управлении выводом из файла дочернего процесса.

...