如何从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
我想最后的答案是控制子进程文件的输出。
一直没能在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
我想最后的答案是控制子进程文件的输出。