未处理的拒绝 - 护照登录应用程序节点 js

Unhandled Rejection - passport login app node js

我正在创建 nodejs 登录应用程序并使用 passport js 进行身份验证。我使用本地 mysql 数据库并使用 sequelize 作为 ORM 库。

在我的用户模型中,我创建了通过用户名获取用户。

module.exports.findUserByUsername = function(username, callback){
  User.findOne({ where: {username: username} }).then(function(user) {
    var userObj = user.get({plain:true});
    callback(userObj);
  })
}; 

在路由器文件中

passport.use('login', new LocalStrategy(
    function (username, password, done) {

        User.findUserByUsername(username, function (err, user) {
            if(err) {
                throw err;
            }
            console.log(user);
        })
    }
));

我遇到错误 Unhandled rejection (<{object_values...>, no stack trace)

我该如何解决这个问题?

您需要像这样更改回调调用:

callback(null, userObj);

在路由器文件中您 throw 遇到错误时。在异步调用环境中抛出异常不是一个好习惯。无论如何,你调用 findUserByUsername 传递回调期望第一个参数是错误的。

findUserByUsername你return用户对象错误的地方。所以你在路由器文件中的逻辑认为这是一个错误。

为了避免此类异常,您无需抛出异常,return 它们在回调函数中。