passport.js + express: TypeError ('Router.use () требует функции промежуточного программного обеспечения, но получил' + gettype (fn)) - PullRequest
2 голосов
/ 07 апреля 2019

Я использую 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 () нужна функция?

Как я могу решить эту проблему?

1 Ответ

0 голосов
/ 07 апреля 2019

Обычно эта ошибка возникает из-за отсутствия экспорта в одном из файлов, который объявляет ваши маршруты. Пожалуйста, проверьте эти файлы дважды.

Также я проверил и приведенный выше код работает как есть.

...