2016-05-06 16 views
0
function isTokened(data) { 
    var token = data; 
    if(token != null || token != undefined){ 
     jwt.verify(token, app.get('userToken'), function(err, decoded) {   
      return { 
       "user": decoded._doc.name, 
       "href": "/salir", 
       "text": "Salir" 
      }; 
     }); 
    }else{ 
     return { 
      href: "/entrar", 
      text: "Entrar" 
     }; 
    } 
} 
  1. Typeerror: c: \ Users \ Hector \ Desktop \ Proyecto \ Ansichten \ index.jade: 81
    79 | li 80 |
    a.text (href = '/ acerca') Acerca

    81| if au.user 82| li 83| a.text(href="/area") #{au.user} 84|
    li Cannot read property 'user' of undefined at eval (eval at
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:218:8), :354:8) at eval (eval at
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:218:8), :453:22) at exports.compile.res
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:219:38) at Object.exports.renderFile
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:380:38) at Object.exports.renderFile
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:370:21) at View.exports.__express [as engine]
    (c:\Users\Hector\Desktop\Proyecto\node_modules\jade\lib\index.js:417:11) at View.render
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\view.js:126:8) at tryRender
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\application.js:639:10) at EventEmitter.render
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\application.js:591:3) at ServerResponse.render
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\response.js:961:7) at c:\Users\Hector\Desktop\Proyecto\app.js:167:6 at Layer.handle [as handle_request]
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\router\layer.js:95:5) at next
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\router\route.js:131:13) at Route.dispatch
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\router\route.js:112:3) at Layer.handle [as handle_request]
    (c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\router\layer.js:95:5) at
    c:\Users\Hector\Desktop\Proyecto\node_modules\express\lib\router\index.js:277:22Fehlerrückgabewert, NodeJS, JWT

Antwort

1

jwt.verify kein Sync-Funktion ist so endet die Funktion ohne Rückkehr etwas Verlassen auf. Sie müssen den Callback-Ansatz verwenden, um das Überprüfungsergebnis zu erhalten. Sie wollen etwas wie folgt aus:

function isTokened(data, callback) { 
    if(data){ 
     jwt.verify(data, app.get('userToken'), function(err, decoded) {   
      callback && callback({ 
       "user": decoded._doc.name, 
       "href": "/salir", 
       "text": "Salir" 
      }); 
     }); 
    }else{ 
     callback && callback({ 
      href: "/entrar", 
      text: "Entrar" 
     }); 
    } 
} 

Sie werden wahrscheinlich wollen einige Fehlerbehandlung zu tun, falls jwt.verify einen Fehler zurückgibt oder dekodiert enthält keine erforderlichen Felder aus.