首页 > 解决方案 > 当我将 passport.initialize() 添加到我的根文件时,我收到此错误。passport.initialize 不是函数

问题描述

我正在尝试创建一个登录注册页面,当我将这些行添加app.use(passport.initialize()); ``app.use(passport.session()); 到我的根文件或 app.js 文件时,我在日志中收到此错误passport.initialize is not a function

the root file or app.js file

 const express = require('express');

const dotenv = require('dotenv');

const app = express(); //main app variable that represents the application

const morgan = require('morgan');

const bodyparser = require("body-parser"); //requiring the body parser         

const path = require('path');

const expressValidator = require('express-validator');

const flash = require('connect-flash')

//const flash = require('express-session');

const session = require('express-session');

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

app.use(expressValidator())


//require the monogo db file

const connectDB = require('./server/database/connection');

dotenv.config({ path: 'config.env' });

//for the port variable
const PORT = process.env.PORT || 8080;

//requiring morgan file 
//to log the request 
app.use(morgan('tiny'));

// mongo db connection 

connectDB();

// Body Parser Middleware
// parse application/x-www-form-urlencoded
app.use(express.urlencoded({ extended: false }));
// parse application/json
app.use(express.json());


//set the view engine 
app.set('view engine', 'ejs'); // to render ejs files 


// for front end design // loading assetes

app.use('/css', express.static(path.resolve(__dirname, "assests/css")));

app.use('/imgs', express.static(path.resolve(__dirname, "assests/imgs")));

app.use('/js', express.static(path.resolve(__dirname, "assests/js")));

// connect flash for flash messages
app.use(flash());

// Express Session Middleware
app.use(session({
    secret: 'keyboard cat',
    resave: true,
    saveUninitialized: true
}));



//passport Config
require('./config/passport')(passport); //we need to use that passport value so pass it in 

app.use(passport.initialize());
//app.use(passport.session());
app.use(passport.authenticate('session'));


app.get('*', function(req, res, next) {
    res.locals.user = req.user || null;
    next();
});

the passport configuration以防万一有人问:)

    var express = require('express');
const LocalStrategy = require('passport-local').Strategy;
const User = require('../server/model/userModel');
const bcrypt = require('bcrypt');
var passport = require('passport');

module.exports = function(_passport) {
    // Local Strategy
    passport.use(new LocalStrategy(function(username, password, done) {
        // Match Username
        let query = { username: username };
        User.findOne(query, function(err, user) {
            /*
            if (err) throw err;
            if (!user) {
                return done(null, false, { message: 'No user found' });
            }
            */
            if (err) { return done(err); }
            if (!user) {
                return done(null, false, { message: 'Incorrect username.' });
            }

            // Match Password
            bcrypt.compare(password, user.password, function(err, isMatch) {
                if (err) throw err;
                if (isMatch) {
                    return done(null, user);
                } else {
                    return done(null, false, { message: 'Wrong password' });
                }
            });


        });


    }));

    passport.serializeUser(function(user, done) {
        done(null, user.id);
    });


    passport.deserializeUser(function(id, done) {
        User.findById(id, function(err, user) {
            done(err, user);
        });
    });

}

错误日志:

    app.js:82
app.use(passport.initialize());
                 ^

TypeError: passport.initialize is not a function
    at Object.<anonymous> (E:\HalalMunchies\app.js:82:18)
    at Module._compile (internal/modules/cjs/loader.js:1085:14)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:1114:10)
    at Module.load (internal/modules/cjs/loader.js:950:32)
    at Function.Module._load (internal/modules/cjs/loader.js:790:12)
    at Function.executeUserEntryPoint [as runMain] (internal/modules/run_main.js:76:12)
    at internal/main/run_main_module.js:17:47
[nodemon] app crashed - waiting for file changes before starting...

标签: node.jsexpressauthenticationpassport.jsbackend

解决方案


推荐阅读