我想使用removed as of Express 3.0 req.flash
。根据{{3}},只需将应用程序配置为使用它:
app.configure(function() {
app.use(express.cookieParser('keyboard cat'));
app.use(express.session({ cookie: { maxAge: 60000 }}));
app.use(flash());
});
但是,我已将我的应用配置为:
app.configure('production', function() {
app.use(express.static('/static', express.static(__dirname + '/lib/static')));
app.use(express.errorHandler());
app.use(express.cookieParser('keyboard cat'));
app.use(express.session({ cookie: { maxAge: 60000 }}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(app.router);
});
我一直在尝试检测闪存的可用性:
app.all('/*', function(req, res, next) {
console.log('FLASH: ', req.flash);
....
我的日志显示以下内容:
FLASH: undefined
FLASH: undefined
FLASH: function _flash(type, msg) {....
仅显示一条“/”路线请求。我理解为什么可能会有多个GET
请求发送到'/'的请求,但是,我想知道为什么req.flash
在每个请求都不可用,因为文档状态。
答案 0 :(得分:2)
我认为您应该将配置更改为:
app.configure('production', function() {
app.use(express.errorHandler());
app.use(express.cookieParser('keyboard cat'));
app.use(express.session({ cookie: { maxAge: 60000 }}));
app.use(flash());
app.use(passport.initialize());
app.use(passport.session());
app.use(express.static('/static', express.static(__dirname + '/lib/static')));
app.use(app.router);
});
我总是将静态路由保留在中间件的末尾。
我认为问题是您的/*
路由也在为/static
请求触发,并且由于该中间件是在flash()
中间件之前声明的,因此请求对象尚未被修改。