【发布时间】:2019-04-07 07:37:49
【问题描述】:
我使用 pasport.js + Express.js 出现错误
TypeError('Router.use() requires a middleware function but got a ' + gettype(fn))
使用此代码
passport/local.js
var LocalStrategy = require("passport-local").Strategy;
var models = require("../../models");
module.exports = new LocalStrategy(
function(username,password,done){
models.User.findOne(
{
where:{username:username}
},function(err,user){
if(err){return done(err);}
if(!user){return done(null,false,{message:"no such user"});}
if(!user.validPassword(password)){return done(null,false,{message:"invalid password"});}
return done(null,user);
}
);
}
);
passport.js
var passport = require("passport");
var models = require("../models");
var local = require("./passport/local");
module.exports = () => {
passport.serializeUser((user,done) => {
done(null,user.id);
});
passport.deserializeUser((id,done) => {
models.User.findOne({
where:{id:id}
}).then(user => {
done(null,user);
}).catch(err => {
done(err,null);
});
});
console.log(typeof(local));
passport.use(local);
}
console.log(typeof(local));返回“对象”。但是 passport.use() 需要函数吗?
我该如何解决这个问题?
【问题讨论】:
-
这段代码对我有用。对象就是它应该是的。你能检查所有其他文件是否导出了一些东西吗?由于是您的路由器抱怨,我认为问题出在其他地方,而不是 Passport。
-
谢谢!!!!我在我的一个路由器文件中忘记了“module.exports = router”。
-
酷。我发送了相同的答案,您可以将其标记为解决方案,以防有人遇到相同的错误
标签: javascript node.js express passport.js