Решенная проблема:
Перехватите ошибку Mongoose в deserializeUser
и отправьте ошибку в промежуточное ПО:
passport.deserializeUser((id, done) => {
Family.findById(id)
.then(family => {
done(null, family);
})
.catch(error => {
done(error);
});
});
Обработайте ошибку в промежуточном программном обеспечении обработки ошибок через эти последние строки index.js
:
[...]
app.use(require('./middlewares/errorHandler_Final'));
app.listen(5000);
Определение промежуточного ПО для настраиваемой ошибки: errorHandler_Final.js
module.exports = (err, req, res, next) => {
if (res.headersSent) {
console.log('HEADERS ALREADY SENT');
return next(err);
}
if (err.name === 'CastError') {
// specifically handles that error. In my case,
// if session id gets corrupted, delete the cookie from client browser.
// req.logout alone was not enough.
// NB the cookie had been created by cookie-session
req.session = null;
req.logout;
return res.sendStatus(500);
}
return res.sendStatus(err.status || 500);
};