Express 如何修复错误->;NetworkingError:读取EconReset,无法在将头发送到客户端后设置头
我曾尝试使用multer软件包将大文件上传到aws s3位置存储。我提到了我的代码。已成功上载多达5 kb的文件。但是大文件没有上传。 请任何人建议我 这是我的路线文件Express 如何修复错误->;NetworkingError:读取EconReset,无法在将头发送到客户端后设置头,express,amazon-s3,file-upload,multer,Express,Amazon S3,File Upload,Multer,我曾尝试使用multer软件包将大文件上传到aws s3位置存储。我提到了我的代码。已成功上载多达5 kb的文件。但是大文件没有上传。 请任何人建议我 这是我的路线文件 module.exports = app => { const s3 = require("../controllers/s3.controller.js"); const multer = require('multer'); const crypto = require("cr
module.exports = app => {
const s3 = require("../controllers/s3.controller.js");
const multer = require('multer');
const crypto = require("crypto");
var storage = multer.memoryStorage();
var upload = multer({storage: storage});
var router = require("express").Router();
router.post('/upload', upload.single("file"), s3.doUpload);
};
s3.controller.js
const s3 = require('../config/s3.config');
const s3BucketName = process.env.BUCKET;
exports.doUpload = (req, res) => {
let bucketName = s3BucketName;
bucketName = bucketName + "/testingCourse";
const params = {
Bucket: bucketName,
Key: req.file.originalname,
Body: req.file.buffer
}
s3.upload(params, (err, data) => {
if (err) {
res.status(500).send("Error -> " + err);
}
res.send({
status:200,
message:"OK",
data:req.file.originalname
});
});
}
文件没有上传,我得到了回复
F:\newapi\node_modules\aws-sdk\lib\request.js:31
throw err;
^
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:526:11)
at ServerResponse.header (F:\newapi\node_modules\express\lib\response.js:771:10)
at ServerResponse.send (F:\newapi\node_modules\express\lib\response.js:170:12)
at ServerResponse.json (F:\newapi\node_modules\express\lib\response.js:267:15)
at ServerResponse.send (F:\newapi\node_modules\express\lib\response.js:158:21)
at ManagedUpload.callback (F:\newapi\app\controllers\s3.controller.js:21:7)
at ManagedUpload.cleanup (F:\newapi\node_modules\aws-sdk\lib\s3\managed_upload.js:629:10)
at Response.<anonymous> (F:\newapi\node_modules\aws-sdk\lib\s3\managed_upload.js:566:28)
at Request.<anonymous> (F:\newapi\node_modules\aws-sdk\lib\request.js:369:18)
at Request.callListeners (F:\newapi\node_modules\aws-sdk\lib\sequential_executor.js:106:20)
at Request.emit (F:\newapi\node_modules\aws-sdk\lib\sequential_executor.js:78:10)
at Request.emit (F:\newapi\node_modules\aws-sdk\lib\request.js:688:14)
at Request.transition (F:\newapi\node_modules\aws-sdk\lib\request.js:22:10)
at AcceptorStateMachine.runTo (F:\newapi\node_modules\aws-sdk\lib\state_machine.js:14:12)
at F:\newapi\node_modules\aws-sdk\lib\state_machine.js:26:10
at Request.<anonymous> (F:\newapi\node_modules\aws-sdk\lib\request.js:38:9)
at Request.<anonymous> (F:\newapi\node_modules\aws-sdk\lib\request.js:690:12)
at Request.callListeners (F:\newapi\node_modules\aws-sdk\lib\sequential_executor.js:116:18)
at Request.emit (F:\newapi\node_modules\aws-sdk\lib\sequential_executor.js:78:10)
at Request.emit (F:\newapi\node_modules\aws-sdk\lib\request.js:688:14)
at Request.transition (F:\newapi\node_modules\aws-sdk\lib\request.js:22:10)
at AcceptorStateMachine.runTo (F:\newapi\node_modules\aws-sdk\lib\state_machine.js:14:12) {
message: 'Cannot set headers after they are sent to the client',
code: 'ERR_HTTP_HEADERS_SENT',
time: 2020-09-15T10:50:27.365Z
}
F:\newapi\node\u modules\aws sdk\lib\request.js:31
犯错误;
^
错误[ERR\u HTTP\u HEADERS\u SENT]:发送到客户端后无法设置头
在ServerResponse.setHeader(_http_outgoing.js:526:11)
在ServerResponse.header(F:\newapi\node\u modules\express\lib\response.js:771:10)
在ServerResponse.send(F:\newapi\node\u modules\express\lib\response.js:170:12)
在ServerResponse.json(F:\newapi\node\u modules\express\lib\response.js:267:15)
在ServerResponse.send(F:\newapi\node\u modules\express\lib\response.js:158:21)
在ManagedUpload.callback(F:\newapi\app\controllers\s3.controller.js:21:7)
在ManagedUpload.cleanup(F:\newapi\node\u modules\aws sdk\lib\s3\managed\u upload.js:629:10)
在回答时。(F:\newapi\node\u modules\aws sdk\lib\s3\managed\u upload.js:566:28)
应要求。(F:\newapi\node\u modules\aws sdk\lib\request.js:369:18)
at Request.callListeners(F:\newapi\node\u modules\aws sdk\lib\sequential\u executor.js:106:20)
at Request.emit(F:\newapi\node\u modules\aws sdk\lib\sequential\u executor.js:78:10)
at Request.emit(F:\newapi\node\u modules\aws sdk\lib\Request.js:688:14)
at Request.transition(F:\newapi\node\u modules\aws sdk\lib\Request.js:22:10)
在AcceptorStateMachine.runTo(F:\newapi\node\u modules\aws sdk\lib\state\u machine.js:14:12)
位于F:\newapi\node\u modules\aws sdk\lib\state\u machine.js:26:10
应要求。(F:\newapi\node\u modules\aws sdk\lib\request.js:38:9)
应要求。(F:\newapi\node\u modules\aws sdk\lib\request.js:690:12)
at Request.callListeners(F:\newapi\node\u modules\aws sdk\lib\sequential\u executor.js:116:18)
at Request.emit(F:\newapi\node\u modules\aws sdk\lib\sequential\u executor.js:78:10)
at Request.emit(F:\newapi\node\u modules\aws sdk\lib\Request.js:688:14)
at Request.transition(F:\newapi\node\u modules\aws sdk\lib\Request.js:22:10)
在AcceptorStateMachine.runTo(F:\newapi\node\u modules\aws sdk\lib\state\u machine.js:14:12){
消息:“发送到客户端后无法设置标头”,
代码:“ERR_HTTP_HEADERS_SENT”,
时间:2020-09-15T10:50:27.365Z
}
任何人请推荐我
感谢您出现此错误,因为当您收到错误时,您正在发送一个响应,之后您也将发送一个状态为200的响应 所以,只要在出现任何错误时返回该响应即可
if (err) {
return res.status(500).send("Error -> " + err);
}