#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);
});
Он выведет ту же ошибку.