TypeError:无法读取属性'用户名'在passportjs中未定义

时间:2016-06-20 05:05:28

标签: javascript node.js passport.js

  app.get('/getUser', function(req, res) {

     console.log(req.user.username);

         res.json({'user':req.user.username}); 
    });

当我登录passportjs时,这不会返回任何错误,但是当我没有登录时,它会显示TypeError: Cannot read property 'username' of undefined错误,我只有在定义时才需要发送res.json,

     app.get('/getUser', function(req, res) {

         console.log(req.user.username);
    if(typeof req.user.username!="undefined")
             res.json({'user':req.user.username}); 
           else
     res.json({'user':"Anonymous"}); 
                    });

但它为条件语句提供了错误,我如何处理错误?

1 个答案:

答案 0 :(得分:1)

Passport将用户置于req对象上。如果尚未使用Passport执行身份验证,则请求对象上将没有用户对象。因此,req.user将是未定义的。您可以想象,undefined没有名为username的属性,导致您的错误。

您可能需要以下内容:

username = req.user ? req.user.username : "Anonymous"
res.json({'user':username});