Функция GCloud и GStorage: ошибка отправки загруженного файла: «запись после завершения»

#express #google-cloud-storage #google-cloud-functions

#экспресс #google-облачное хранилище #google-cloud-функции

Вопрос:

Моя цель — извлечь файл из хранилища Google, а затем отправить его обратно через response. Проблема в том, что при первом запуске этой функции она выходит из строя Error [ERR_STREAM_WRITE_AFTER_END]: write after end . Следующие выполнения работают нормально.

 exports = module.exports = region(defaultRegion).https.onRequest(async (req, res): Promise<void> => {
  const [authError] = await to(handleAuth(req, res));
  if (authError) {
    res.status(500).send(authError.message);
    return;
  }

  const { assetId, contentType, path } = req.query;

  const file = bloqifyStorage.bucket().file(`assets/${assetId}/${path}`);

  const fileExists = (await file.exists())[0];
  if (!fileExists) {
    res.status(404).send(`${path} was not found`);
    return;
  }

  const fileStream = file.createReadStream();

  fileStream.pipe(res).on('end', (): void => {
    res.setHeader('content-type', contentType);
  });
});
  

Чего мне здесь не хватает?

Редактировать: удаление заголовка set не решает проблему. Пример:

 const fileStream = file.createReadStream();

// res.setHeader('content-type', contentType);
fileStream.pipe(res).on('error', (e): void => {
  console.log(e);
});
  

Он выведет ту же ошибку.