req.flash вызывает ошибку при редактировании и удалении маршрутов (Node.js, Javascript и Express) - PullRequest
0 голосов
/ 05 ноября 2019

Я получаю эту ошибку всякий раз, когда пытаюсь получить доступ к любому из моих маршрутов редактирования / удаления (удаление маршрута фактически приводит к сбою моего сервера). Любая помощь в достижении сути этого будет принята с благодарностью! Дайте мне знать, если есть что-то еще, что я могу предоставить!

Как только я избавлюсь от всего кода 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});
    });
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...