如何从nodejs子进程中的stderr中提取错误

How to extract the error from a stderr in nodejs childprocess

一直没能在google或其他地方找到答案,希望大家指导。

我有一个 node.js 应用程序调用可执行文件 (.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 时,我不知道如何获取消息,我记录了数据并得到了这个: 标准错误:

我可以使用.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 文件的生成时,我将尝试使用一些 try except 代码块(是的,它是 python 代码),但我不知道我是否仍会得到像 sterr: Traceback 这样的文本。 .. 我会在得到结果后立即编辑这个问题。

正如我从一开始就期望的那样,没有内置方法可以提取我从我的 exe 文件中得到的错误,错误是一个字符串,可以用来获取错误消息,但这可能很复杂。

我尝试在我的 python 代码中使用 try except 块,后来编译成 exe 文件,它看起来像:

try:

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

现在,我的错误处理函数的输出是:

Error

我想最后的答案是控制子进程文件的输出。