Я использую метод child_process spawnSync для запуска некоторых сценариев Python, все работает, но я пока не могу отловить ошибки, выдаваемые python в блоках try / catch, и было бы хорошо, если бы я мог также отлавливать ошибки, возникающие вручную из 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')