Я тестирую пакеты express-session
и connect-flash
. Я заметил, что в простой модульной установке мне не нужно включать эти пакеты в каждый файл, который их использует.
Например, следующая базовая установка выполняется без ошибок, но я не уверен, почему. routeb.js использует req.flash()
, но не включает ни пакет, ни связанный шаблон.
app.js
"use strict";
const express = require('express');
const routeA = require('./controllers/routea');
const routeB = require('./controllers/routeb');
const app = express();
app.use(routeA);
app.use(routeB);
app.set('view engine', 'ejs');
app.listen(8080);
routea.js
"use strict";
const express = require('express');
const session = require('express-session');
const flash = require('connect-flash');
const router = express.Router();
router.use(session({
secret: 'keyboard cat',
resave: true,
saveUninitialized: true
}));
router.use(flash());
router.use( function(req, res, next) {
res.locals.redirectToPageA = req.flash('redirectToPageA');
next();
});
router.get('/pagea', function(req, res, next) {
res.render('pagea');
});
module.exports = router;
routeb.js Этот файл меня смущает. Я вызываю req.flash (), сообщение пересылается и корректно отображается на pagea.ejs и не выдает ошибку. Однако в этом файле я не включил express-session
или connect-flash
и соответствующий шаблон.
"use strict";
const express = require('express');
const router = express.Router();
router.get('/pageb', function(req, res, next) {
req.flash('redirectToPageA', 'I was just redirected to page a.');
res.redirect('pagea');
});
module.exports = router;
из pagea.ejs
<%= redirectToPageA %>