passport.use不是一个功能

时间:2016-09-06 08:21:02

标签: javascript node.js express passport.js

我正在尝试将护照服务添加到我的应用中,但是我收到以下错误, 我已经安装了所有依赖项并尝试搜索此错误但没有,请帮助

passport.use(new JwtStrategy(opts, function(jwt_payload, done){         
     TypeError: passport.use is not a function
     at module.exports (/home/udit/Goserv/app/config/passport.js:11:14)
     at Object.<anonymous> (/home/udit/Goserv/app/server/server.js:9:45)
     at Module._compile (module.js:410:26)
     at Object.Module._extensions..js (module.js:417:10)
     at Module.load (module.js:344:32)
     at Function.Module._load (module.js:301:12)
     at Function.Module.runMain (module.js:442:10)
     at startup (node.js:136:18)
     at node.js:966:3

这是passport.js文件:

var JwtStrategy = require('passport-jwt').Strategy,
    ExtractJwt = require('passport-jwt').ExtractJwt;

var User = require('../model/user.js');
var config = require('../config/database');

module.exports = function(passport){
    var  opts = {};
    opts.secretOrKey =  config.secret;
    opts.jwtFromRequest = ExtractJwt.fromAuthHeader();
    passport.use(new JwtStrategy(opts, function(jwt_payload, done){
        User.find({id: jwt_payload.id}, function(err, user){
            if (err) {
                return done(err, false);
            }
            if (user) {
                return done(null, user);
            } else {
                return done(null, false);
            }
        })
    }));
}

2 个答案:

答案 0 :(得分:2)

如果这样导入,你会得到这个错误

import * as passport from 'passport';

应该

import passport from 'passport';

答案 1 :(得分:1)

您需要使用以下命令从app.js文件中要求passport.js:

require('./config/passport')(passport);

app.js文件中所有与护照相关的命令应为:

const passport = require('passport');

app.use(passport.initialize());
app.use(passport.session());

require('./config/passport')(passport);