2016-07-19 14 views
1

Ich verwende Passpjs, um die Benutzerauthentifizierung für meine Express-App durchzuführen. Aber ich habe in ein seltsames Problem lautete:Variable nicht im Script-Tag verfügbar

Auf meinem Index Route Ich bin Rendern der index.jade Vorlage mit dem Benutzerparameter

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

Jetzt in meiner Jade Vorlage Ich habe folgendes

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

Aus irgendeinem Grund ist der bedingte Durchlauf in diesem Benutzer dort. Und auch wenn ich das Benutzerobjekt im eingeloggten # {user} ausdrucke, druckt es die Details gut aus. Innerhalb des Skript-Tags erhalte ich jedoch eine nicht erfasste Referenz, der Benutzer ist nicht definiert. Weiß jemand, warum das passiert?

Antwort

2

Sie müssen auch Vorlage Zeichenfolge in scrip-Tag verwenden.

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

Wenn Sie Objekt einbetten möchten, können Sie versuchen, folgen.

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

Okay, das funktioniert, aber ich hatte zusätzliche Probleme, wenn der Benutzer ein Objekt ist. Es sieht so aus, als ob Jade den JSON nicht richtig analysiert, so dass das Objekt einen Syntaxfehler bekommt. Ich habe mich entschieden, einfach den Benutzernamen einzugeben und alles funktioniert gut. – tetutato

Verwandte Themen