Выдача ошибки при возникновении ошибки в createWriteStream
У меня есть такая функция:
function createDevis(invoice, path) {
const file = fs.createWriteStream(path);
file.on("error", function (error) {
logger.error("Inside file.on inside createDevis function");
logger.error(error);
file.end();
});
doc.pipe(file);
}
Это называется здесь:
models.operation_sav
.findByPk(devisInformation.opSavId, { include: [{ all: true }] })
.then((operationSavFound) => {
if (operationSavFound !== null) {
// When this function throws an error, I would like to also handle it in the catch block
createDevis(devisData, "./generatedDocuments/devis.pdf");
} else {
res.status(400).json({
tag: "Operation Sav Not found",
message: error.message,
});
}
})
.catch((error) => {
logger.error(error);
res.status(400).json({
tag: "The devis has not been generated!",
message: error.message,
});
});
Я бы хотел, чтобы все ошибки обрабатывались в блоке catch. Однако способcreateWriteStream
обрабатывает ошибки внутри, не позволяет мне поймать ошибку внутри блока catch:
const file = fs.createWriteStream(path);
file.on("error", function (error) {
logger.error("Inside file.on inside createDevis function");
logger.error(error);
file.end();
});
Это создает проблемы при ответе на http-запрос, а также затрудняет обработку ошибок в коде. Я попытался выбросить ошибку внутриfile.on
:
file.on("error", function (error) {
logger.error("Inside file.on inside createDevis function");
logger.error(error);
console.log(error);
file.end();
throw new Error("Error inside createWriteStream");
});
Чтобы отловить его, как и другие ошибки в блоке catch. Но это ничего не изменило.