在生产中发送给客户端后无法设置 headers
Cannot set headers after they are sent to the client in production
我运行我不知道,我将如何解决这个问题
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
当我 运行 我的节点 js 代码在 ec2 实例(生产)中但在我的本地主机中完美运行时。
我实际做的是使用节点 js 将 img 上传到 s3 存储桶 API https://grokonez.com/aws/node-js-restapis-upload-file-to-amazon-s3-using-express-multer-aws-sdk
var stream = require('stream');
const s3 = require('../config/s3.config.js');
exports.doUpload = (req, res) => {
const s3Client = s3.s3Client;
const params = s3.uploadParams;
params.Key = Date.now() +'_'+req.file.originalname
params.Body = req.file.buffer;
s3Client.upload(params, (err, data) => {
if (err) {
res.status(500).json({error:"Error -> " + err});
}
res.json({message: 'File uploaded successfully! -> keyname = ' + params.Key,file_name: params.Key});
});
}
这是我在控制器中的代码
这里你遇到了一个错误InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records
,你在 err 块中设置了 res.status
所以首先执行这个块并向客户端发送一个响应,然后当它尝试执行 `res.json' 出现此错误,您只需为数据使用其他条件即可。
s3Client.upload(params, (err, data) => {
if (err) {
res.status(500).json({error:"Error -> " + err});
} else if(data){
res.json({message: 'File uploaded successfully! -> keyname = ' + params.Key,file_name: params.Key});
}
});
使用此代码,您可以处理错误而不会收到任何 ERR_HTTP_HEADERS_SENT
错误。
我运行我不知道,我将如何解决这个问题
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
当我 运行 我的节点 js 代码在 ec2 实例(生产)中但在我的本地主机中完美运行时。
我实际做的是使用节点 js 将 img 上传到 s3 存储桶 API https://grokonez.com/aws/node-js-restapis-upload-file-to-amazon-s3-using-express-multer-aws-sdk
var stream = require('stream');
const s3 = require('../config/s3.config.js');
exports.doUpload = (req, res) => {
const s3Client = s3.s3Client;
const params = s3.uploadParams;
params.Key = Date.now() +'_'+req.file.originalname
params.Body = req.file.buffer;
s3Client.upload(params, (err, data) => {
if (err) {
res.status(500).json({error:"Error -> " + err});
}
res.json({message: 'File uploaded successfully! -> keyname = ' + params.Key,file_name: params.Key});
});
}
这是我在控制器中的代码
这里你遇到了一个错误InvalidAccessKeyId: The AWS Access Key Id you provided does not exist in our records
,你在 err 块中设置了 res.status
所以首先执行这个块并向客户端发送一个响应,然后当它尝试执行 `res.json' 出现此错误,您只需为数据使用其他条件即可。
s3Client.upload(params, (err, data) => {
if (err) {
res.status(500).json({error:"Error -> " + err});
} else if(data){
res.json({message: 'File uploaded successfully! -> keyname = ' + params.Key,file_name: params.Key});
}
});
使用此代码,您可以处理错误而不会收到任何 ERR_HTTP_HEADERS_SENT
错误。