node.js - 当我将 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...
解决方案
推荐阅读
- python - 如何在 django 中的两个日期之间创建每月数组?
- python - Python XGB 标签未读取正确的标签大小
- java - Esper 数据流中的“Where 子句”错误
- parsing - 如何跨 *nix TTY/终端仿真器解释/解析键盘和鼠标输入?
- r - 在R中的列表中查找行中最频繁的元素
- javascript - 离子虚拟滚动渲染延迟
- javascript - 从打印 java-script window.print 中删除应用程序名称和网页地址
- python - 用python从json内容中提取一些数据
- javascript - 如何使用快速服务器为 Web 组件应用程序提供服务
- html - 在选择选项前添加 svg 图像