Я получаю эту ошибку всякий раз, когда пытаюсь получить доступ к любому из моих маршрутов редактирования / удаления (удаление маршрута фактически приводит к сбою моего сервера). Любая помощь в достижении сути этого будет принята с благодарностью! Дайте мне знать, если есть что-то еще, что я могу предоставить!
Как только я избавлюсь от всего кода req.flash, доступ к маршрутам редактирования и удаления снова начнет работать.
Обратите внимание: «**» не включены в код. Просто выделение областей называется req.flash.
ERROR:
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
at ServerResponse.setHeader (_http_outgoing.js:470:11)
at ServerResponse.header (/workspace/YelpCamp/node_modules/express/lib/response.js:771:10)
at ServerResponse.send (/workspace/YelpCamp/node_modules/express/lib/response.js:170:12)
at done (/workspace/YelpCamp/node_modules/express/lib/response.js:1008:10)
at tryHandleCache (/workspace/YelpCamp/node_modules/ejs/lib/ejs.js:260:5)
at View.exports.renderFile [as engine (/workspace/YelpCamp/node_modules/ejs/lib/ejs.js:485:10)
at View.render (/workspace/YelpCamp/node_modules/express/lib/view.js:135:8)
at tryRender (/workspace/YelpCamp/node_modules/express/lib/application.js:640:10)
at Function.render (/workspace/YelpCamp/node_modules/express/lib/application.js:592:3)
at ServerResponse.render (/workspace/YelpCamp/node_modules/express/lib/response.js:1012:7)
at /workspace/YelpCamp/routes/campgrounds.js:59:7
at /workspace/YelpCamp/node_modules/mongoose/lib/model.js:4598:16
at /workspace/YelpCamp/node_modules/mongoose/lib/query.js:4351:12
at process.nextTick (/workspace/YelpCamp/node_modules/mongoose/lib/query.js:2849:28)
at process._tickCallback (internal/process/next_tick.js:61:11)
================================================================================
APP.JS
app.use(function(req, res, next){
res.locals.currentUser = req.user;
res.locals.error = req.flash("error");
res.locals.success = req.flash("success");
next();
});
==========================================================================
middlewareObj.checkCampgroundOwnership = function(req, res, next){
if(req.isAuthenticated()){
Campground.findById(req.params.id, function(err, foundCampground){
if(err || !foundCampground){
**req.flash("error", "Campground not found.");**
res.redirect("back");
}else{
if(foundCampground.author.id.equals(req.user._id)){
next();
}else
**req.flash("error", "You do not own this Campground.");**
res.redirect("back");
}
});
}else{
**req.flash("error", "You must be logged in to complete that action.");**
res.redirect("back");
}
};
==========================================================================
//EDIT ROUTE
router.get("/:id/edit", middleware.checkCampgroundOwnership, function(req, res){
Campground.findById(req.params.id, function(err, foundCampground){
res.render("campgrounds/edit", {campground: foundCampground});
});
});