По какой-то причине, если я последний кусок промежуточного программного обеспечения и пытаюсь вызвать функцию next()
, я получаю ту же ошибку, что и эта общая проблема SO.
Итакчто у меня есть минимальный пример, я настроил его следующим образом:
В моем маршруте у меня есть:
router.get('/add',(req,res,next) => {
res.render('ideas/add');
next();
});
И затем у меня есть последний кусок промежуточного программного обеспечения:
app.use(function finalMiddleware(req,res,next){
console.log("We are here!");
console.log(app._router.stack);
next();
});
И консоль записывает следующее как последний элемент в стеке:
Layer {
handle: [Function: finalMiddleware],
name: 'finalMiddleware',
params: {},
path: '',
keys: [],
regexp: { /^\/?(?=\/|$)/i fast_star: false, fast_slash: true },
route: undefined } ]
Однако я все равно получаю:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:471:11)
at ServerResponse.header (../node_modules/express/lib/response.js:767:10)
at ServerResponse.send (../node_modules/express/lib/response.js:170:12)
at done (../node_modules/express/lib/response.js:1004:10)
at Immediate.<anonymous> (../node_modules/express-handlebars/lib/utils.js:26:13)
Мне интересно, если это длякакая-то причина связана с рулем?Я просто не понимаю, почему, если я не пишу заголовки с более поздним промежуточным программным обеспечением, это может быть проблемой.Я не могу понять, как отладить его дальше.Конечно, я могу удалить вызов next()
из своего последнего компонента промежуточного программного обеспечения, но я хочу понять, происходит ли что-то более глубокое, поскольку я новичок в Express и хочу, чтобы я правильно понял материал.