Я получаю ожидаемое изображение с этим кодом, но оно не отображается в моем шаблоне pug, вместо этого оно отображается в консоли devtools браузера (надеюсь, это имеет смысл), и кажется, что я пытаюсь установить заголовки дважды. Мой код выдает [ERR_HTTP_HEADERS_SENT], как показано ниже.
Я прочитал множество вопросов StackOverflow по этому вопросу, в том числе подробное описание проблемы:
Ошибка: невозможно установить Заголовки после того, как они отправлены клиенту
, и я думаю, что на самом деле происходит то, что я неправильно обрабатываю обратный вызов, но я не уверен.
I ' мы действительно боролись с этим и могли бы немного помочь, указав, где я иду не так.
route. js:
router.get('/issue/filedisplay/:id', issue_controller.file_display);
controller. js:
// controller.js
exports.file_display = function(req, res) {
gfs.files.findOne(
{ _id: mongoose.Types.ObjectId(req.params.id) },
(err, file) => {
//res.contentType(file.contentType);
// Check if file
if (!file || file.length === 0) {
return res.status(404).json({
err: 'No file exists',
});
}
const readstream = gfs.createReadStream(file._id);
readstream.pipe(res);
readstream.on('close', () => {
res.render('filedisplay', {
title: 'Display Image',
file: file._id,
});
});
//return res.json(file);
//return res;
}
);
};
Шаблон мопса:
//-filedisplay.pug
extends layout
block content
h1= title
p Display Image
div
img.image(src="/list/issue/filedisplay/" + file alt="")
Ошибка:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:482:11)
at ServerResponse.header (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/response.js:771:10)
at ServerResponse.send (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/response.js:170:12)
at done (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/response.js:1008:10)
at Object.exports.renderFile (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/pug/lib/index.js:421:12)
at View.exports.__express [as engine] (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/pug/lib/index.js:464:11)
at View.render (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/view.js:135:8)
at tryRender (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/application.js:640:10)
at Function.render (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/response.js:1012:7)
at /home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/app.js:82:7
at Layer.handle_error (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/router/layer.js:71:5)
at trim_prefix (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/router/index.js:315:13)
at /home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/router/index.js:284:7
at Function.process_params (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/router/index.js:335:12)
at next (/home/don/dev/sandbox/fileupload-ex/file-upload-gridfs/node_modules/express/lib/router/index.js:275:10)