var session = require('express-session');
var MongoStore = require('connect-mongo')(session);
app.use(session({
secret: settings.cookieSecret,
key: settings.db,//cookie name
cookie: { maxAge: 1000 * 60 * 60 * 24 * 30 },//30 days
store: new MongoStore({
url: 'mongodb://localhost/blogdb'
}),
resave: true,
saveUninitialized: true
}));
var flash = require('connect-flash');
app.use(flash());
我已经在app.js里面用use flash connect-flash 这个我也安装了
-
- 这个报错莫名其妙的 求拯救
https://github.com/nswbmw/N-blog/wiki/第1章–一个简单的博客
我是参照这个教程学习的 express 是4.x的版本
console.log(req.session + ’ ’ + req.flash); 结果是undefinedundefined 这样是不是表示我use的时候出错了。。。
我发现在 app.js 中 调用req.flash 不会报错 app.use(function (req, res, next) {
req.flash(‘error’, ‘用户已存在!’);
var err = new Error(‘Not Found’); err.status = 404; next(err); });
但是在路由 index.js中调用的话 就会报错 想不通 求解。。。 谢谢大神们
我检查了req的属性 在app.js中回调时 它有session的属性 但是在index.js中回调的时候 并没有这个属性 输出是undefined
我找到原因了 在app.js 中调用app.use 的顺序有关 app.use(session({ secret: settings.cookieSecret, key: settings.db,//cookie name cookie: { maxAge: 1000 * 60 * 60 * 24 * 30 },//30 days store: new MongoStore({ url: ‘mongodb://localhost/blogdb’ }), resave: true, saveUninitialized: true }));
app.use(flash());
app.use(’/’, routes);
app.use(’/users’, users);
// catch 404 and forward to error handler app.use(function (req, res, next) {
req.flash(‘error’, ‘用户已存在!’);
var err = new Error(‘Not Found’); err.status = 404; next(err); }); 那个session的中间件 要比路由的早use 这样路由中的回调才会有session这个属性 req.flash 本身是基于session的 - -! 真艰辛 希望能对下一个人有帮助
感谢,正是这样解决了问题
感谢,同样的问题,把app.use(flash());提上去就成功了,真是前人栽树,后人乘凉。