我正在使用child_process spawnSync方法来运行一些python脚本,它全部正常工作,但到目前为止我无法在try / catch块中捕获python抛出的错误,如果我还可以捕获从python手动引发的错误,那将是很好的。
示例:
Node.js
try {
const process =
await spawn('python3', [ Helpers.resourcesPath('pythonScripts/main.py'),
debug_mode,
lang
], { input: '"' + front_img + '""' + back_img + '"' });
const errorText = process.stderr.toString().trim();
if (errorText) {
return response.badRequest({
message: errorText
});
} else {
return response.success({
message: process.stdout.toString().trim()
});
}
} catch(e) {
return response.badRequest()
}
Python
try:
ocr = tool.image_to_string(Image.fromarray(img))
for key, words in languages.items():
result = [x.strip() for x in words.split(',')]
if any(x in ocr for x in result):
languageDetected = key
if languageDetected: break
if languageDetected:
return languageDetected
else:
# I want also to be able to get this as a error in node.js
raise Exception('Language not detected')
sys.exit(1)
except Exception as e:
print(str(e))
sys.exit()
在此示例中,如果在python代码中在catch(e)中捕获了错误,它将把它返回到process.stdout而不是process.stderr,我希望能够检查其是否返回了错误或在node.js中反应良好。
如果我还可以捕获在node.js中手动抛出的此异常,那就很好了>>
raise Exception('Language not detected')
我正在使用child_process spawnSync方法来运行一些python脚本,它全部正常工作,但到目前为止我还无法捕捉到try / catch块中python抛出的错误,如果我也可以的话,那会很好...
child_process可以在执行期间侦听错误,请尝试以下操作:
const chid_proccess = require('child_process').spawn;
let main_spawn_process = chid_proccess('run some foo')
main_spawn_process.on('error', function(err) {
console.log(err);
});