使用Express 3,connect-flash和everyauth未定义flash

时间:2012-12-11 02:24:26

标签: node.js express everyauth

升级到Express 3后,我完成了实现connect-flash的“乐趣”并让它正常工作。

我这样实现:

var flash = require('connect-flash');

app.use(flash());

app.use( function (req, res, next) {
    res.locals.everyauth.user = req.user;
    res.locals.user = req.user;
    res.locals.flash = req.flash();
    next();
});

我在我的玉石布局模板中显示闪光警报(由所有页面使用,并且flash.info,flash.warning等具有相似的行),如下所示:

- if ('undefined' !== typeof flash.error && flash.error.length)
    - each msg in flash.error
        div.error= msg

当我通过express渲染我的/ login和/ register页面时,一切都很好,当我得到“flash not defined”错误时。有什么想法吗?

1 个答案:

答案 0 :(得分:1)

嗯,它不漂亮,但我找到了解决方法。基本上,我已经在处理flash消息的express模板中的块中添加了第一个if语句:

- if (flash !== null)
    - if ('undefined' !== typeof flash.error && flash.error.length)
        - each msg in flash.error
            div.error= msg

    - if ('undefined' !== typeof flash.warning && flash.warning.length)
        - each msg in flash.warning
            div.warning= msg

    - if ('undefined' !== typeof flash.info && flash.info.length)
        - each msg in flash.info
            div.info= msg

    - if ('undefined' !== typeof flash.success && flash.success.length)
        - each msg in flash.success
            div.success= msg

然后,我在everyauth的页面渲染语句中添加了一个局部变量,将flash设置为null,就像这样(你需要一个用于注册和登录页面):

.registerView('register.jade')
    .registerLocals({
        title: 'Hi there, I am a register page',
        flash: null
    })

就像我说的那样,它并不漂亮,但似乎有效。