网上这一些答案看的不是很懂
今天在用express-flash的时候
app.use(express.cookieParser('shopmall'));
app.use(express.session({ cookie: { maxAge: 60000 }}));
app.use(flash());
必须要放在app.use(app.router);的前面,不然的话会报错说没有req.flash这个方法
2 回复
app.router的用途这里讲的很详细了。
简单理解:里边会创建一个路由map,把类似app.get、app.post等的所有路由的url和callback做一个映射保存,当req.url命中路由时执行相应的回调。如果不显式调用app.use(app.router);
则会在第一条路由里边隐式调用。
这里边,调用app.use(app.router);
时会暂存req对象,当后面再定义路由时,
app.get('/foo', function(req, res, next) {});
这里的req应该用的是之前保存下来的,所以会出现没有req.flash的错误(没细看express源码,这是猜测的~)。