2016-07-19 27 views
1

我正在使用passportjs在我的快速應用程序上執行用戶身份驗證。但我已經遇到了一個奇怪的問題:變量在腳本標記中不可用

在我的索引路線我渲染index.jade模板,用戶參數現在

router.get('/', function(req, res, next) { 
    res.render('index', { user: req.user }); 
}); 

在我玉模板,我有以下

block content 
    if user 
    h1 logged in #{user} 
    script var shared_resources.user = user 
    if !user 
    h1 Not logged in 

由於某種原因,該用戶的條件傳遞正常。而且當我在#{user}中登錄時打印出用戶對象時,它會打印出細節。然而,在script標籤內部,我得到一個未捕獲的引用,用戶沒有定義。有誰知道爲什麼會發生這種情況?

回答

2

您還需要在scrip標籤中使用模板字符串。

script var shared_resources.user = "#{user}" 

如果你想嵌入對象,你可以試試以下。

script var shared_resources.user = !{JSON.stringify(user).replace(/<\//g, '<\\/')} 
+1

好的,但是當用戶是對象時,我遇到了額外的問題。它看起來像玉沒有正確解析json,所以該對象得到一個語法錯誤。我決定只傳入用戶名字符串,一切正常。 – tetutato

相關問題