“错误:非法参数:string,未定义”,并在节点JS中停止服务器

我试图在节点JS中构build日志应用程序。 在这里密码authentication的应用程序不能正常工作。 当我input用户名和密码时出现以下错误并停止服务器。

this is the error. 

在这里输入图像描述

这是validation部分的代码

 passport.use(new LocalStrategy( function(username, password, done) { User.getUserByUsername(username, function(err, user){ if(err) throw err; if (!user) { return done(null, false, {message: 'Unknown user'}); } User.comparePassword(password, user.password, function(err, isMatch){ if(err) throw err; if (isMatch) { return done(null, user); } else { return done(null, false, {message: 'Invalid password'}); } }); }); })); 

此代码适用于未知用户。 但它不能用于比较用户名和密码。 我在这里看不到任何错误。 我想要帮助解决这个问题。

我在这里发现了这个问题。 这不是关于代码的事情。

问题是我注册了两个用户名和密码不同的用户。 然后当我试图用用户名和一个密码login发生这个错误,并停止服务器。

因为find用户input的用户名的密码有尴尬的情况。 因为有两个用户名相同的密码。

就我而言,我正在使用社交login/注册。 当用户使用社交login选项注册时,存储的密码值为“NULL”。

所以我只是添加了这个小检查:

  comparePassword: function(password, user){ if (!user.password) return false; return bcrypt.compareSync(password, user.password); }