#node.js #amazon-s3 #response-headers
Вопрос:
Я использую Nodejs
с AWS-S3
, и иногда я получаю ошибку:
[ERR_HTTP_HEADERS_SENT]: Не удается установить заголовки после их отправки клиенту
У меня есть эта функция для загрузки любого файла. И когда я вызываю его после определенных запросов, я получаю ошибку.
export const downloadFile = async(req: Request, res: Response) => {
res.setHeader('Content-Disposition', 'attachment');
const params = {
Bucket: AWS_S3.Bucket,
Key: req.params.key
};
s3.getObject(params)
.createReadStream()
.on('error', error => {
return res.status(500).json({
message: 'An error ocurred...',
error
});
}).pipe(res);
}
Ответ №1:
Эта ошибка возникает, когда вы пытаетесь отправить резюме после того, как оно уже было отправлено. вы уверены, что ваш
return res.status(500).json({
message: 'An error ocurred...',
error
});
Не возвращает ли значение после того, как функция уже завершилась? Я бы обязательно дождался выполнения вашего потока, прежде чем приступить к завершению метода. В противном случае вы получите локальное сообщение о том, что мы закончили, фактически не будучи выполненными на сервере, а затем попытаетесь отправить результат снова.