У меня есть экспресс-проект, в котором app.js файл содержит следующий код:
var createError = require('http-errors');
var express = require('express');
var path = require('path');
var favicon = require('serve-favicon');
var cookieParser = require('cookie-parser');
var logger = require('morgan');
var session = require('express-session');
var passport = require('passport');
var LocalStrategy = require('passport-local').Strategy;
var expressValidator = require('express-validator');
var multer = require('multer');
var upload = multer({dest:'./uploads'});
var flash = require('connect-flash');
var bcrypt = require('bcryptjs');
var mongo = require('mongodb');
var mongoose = require('mongoose');
// creating database object
var db = mongoose.connection;
var indexRouter = require('./routes/index');
var usersRouter = require('./routes/users');
var app = express();
// view engine setup
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'hbs');
app.use(logger('dev'));
app.use(express.json());
app.use(express.urlencoded({ extended: false }));
app.use(cookieParser());
app.use(express.static(path.join(__dirname, 'public')));
//handle session
app.use(session({
secret:'sjhfdsjkfhdsjk5456dsddsa',
saveUninitialized: true,
resave:true
}));
// Passport
app.use(passport.initialize());
app.use(passport.session());
//express-messages
app.use(flash());
app.use(function (req, res, next) {
res.locals.messages = require('express-messages')(req, res);
next();
});
app.use('/', indexRouter);
app.use('/users', usersRouter);
// catch 404 and forward to error handler
app.use(function(req, res, next) {
next(createError(404));
});
// error handler
app.use(function(err, req, res, next) {
// set locals, only providing error in development
res.locals.message = err.message;
res.locals.error = req.app.get('env') === 'development' ? err : {};
// render the error page
res.status(err.status || 500);
res.render('error');
});
module.exports = app;
В роутере users.js имеет следующий маршрут
router.post('/register', [
check('fname', "First Name is Required").not().isEmpty(),
check('email', "Email is Required").not().isEmpty(),
check('password', "Password is Required").not().isEmpty()
], function(req, res, next)
{
var fname = req.body.fname;
var lname = req.body.lname;
var email = req.body.email;
var mobile = req.body.mobile;
var password = req.body.password;
var cpassword = req.body.cpassword;
//Check Error
let errors = validationResult(req);
if (!errors.isEmpty()) {
console.log(errors.mapped());
return res.render('register', {layout:false, errors: errors.mapped() })
}else{
var newUser = new Users({
fname: fname,
lname: lname,
role: 'admin',
email: email,
mobile: mobile,
password: password,
status: "Active",
regdate: new Date()
});
Users.createUser(newUser, function(err, user){
if(err) throw err;
});
req.flash('info', 'Registration successfully');
res.redirect('/users/login');
}
});
как и в приведенном выше маршруте, я пытаюсь отправить флеш-сообщение на / users / login , который использует шаблон hbs.но / users / login не отображает флеш-сообщение.Нет сообщения об ошибке.но когда я печатаю флэш в / зарегистрируй роутер используя console.log.это работает, но после перенаправления на / user / login , не отображая флеш-сообщения в шаблоне login.hbs