Выдача ошибки при возникновении ошибки в 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. Но это ничего не изменило.

0 ответов

Другие вопросы по тегам