2012-12-11 28 views
0

升級到Express 3後,我經歷了實現connect-flash的「樂趣」並使其工作。使用Express 3,connect-flash和everyauth時未定義閃存

我實現這樣的:

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 

一切都很好,當我通過渲染快遞,我的/登錄和/寄存器頁除非我得到一個「閃沒有定義」的錯誤。有任何想法嗎?

+0

看起來不像你添加了任何東西。 – chovy

+0

我猜它應該是'res.locals.flash = req.flash;' –

+0

我加了這樣的flash消息:'req.flash('info','這是一個flash消息');'沒有快樂'res.locals.flash = req.flash;'看起來和使用'req.flash()'完全一樣(即除了everyauth登錄頁面和註冊頁面外,所有頁面都可以工作。 – pat

回答

1

嗯,這不是很好,但我找到了解決方法。基本上,我已在我的快遞模板處理提示信息,第一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爲空的局部變量,像這樣(你需要一個用於註冊和登錄頁面):

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

就像我說的,這是不漂亮,但它似乎是工作。

相關問題