发送到客户端后无法设置标头- Nodejs + AWS-S3 getObject



我使用NodejsAWS-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);
}

当您尝试在已发送res后发送res时发生此错误,您确定您的

return res.status(500).json({
message: 'An error ocurred...',
error
});

在函数已经结束后没有返回值?我会确保在到达方法结束之前等待流的执行。否则,您将在本地接收到一些"我们已经完成"的OK,而实际上没有在服务器上完成,然后再次尝试发送结果。

最新更新