简体   繁体   中英

typeerror: cannot read property 'passport' of undefined

I am new to passport and have run into this so maybe this is a very basic development bug with passport, where I am doing the priority is in index.js:

const express = require('express');
const router = express.Router();
const bodyParser = require('body-parser');
var jsonParser = bodyParser.json()

const passport = require('passport')

// create application/x-www-form-urlencoded parser
var urlencodedParser = bodyParser.urlencoded({ extended: false })

const connection = require('../../database/db.js');

router.get('/', (req, res) => {
res.render('user');
});

router.get('/login', (req, res) => {
res.render('login');
});

router.get('/home', (req, res) => {
res.send('hola');
});

router.post('/login', passport.authenticate('local.signup', {
successRedirect: '/home',
failureRedirect: '/login',
failureFlash: true
}));

module.exports = router;

And my main file is app.js, where I am doing the passport.session, passport.json, so this may be the error "passport" undefined:

const express = require('express');
const morgan = require('morgan');
const path = require('path');
const app = express();
require('./lib/passport.js')

const mysql = require('mysql');
const myConnection = require('express-myconnection');
const session = require("express-session");

const passport = require('passport');

// settings
app.set('port', process.env.PORT || 3000);
app.set('views', path.join(__dirname, 'views'));
app.set('view engine', 'ejs');
app.use(express.urlencoded({extended: false}));
app.use(express.json());
app.use(passport.initialize());
app.use(passport.session());


// middlewares
app.use(morgan('dev'));

// routes
app.use(require('./routes'));

// static files
app.use(express.static(path.join(__dirname, 'public')));

// listening the Server
app.listen(app.get('port'), () => {
console.log('Server on port', app.get('port'));
});

And finally, where I get the error that is the console, but that if I could not read the error:

TypeError: Cannot read property 'passport' of undefined
at SessionStrategy.authenticate        (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\passport\lib\strategies\session.js:51:18)
at attempt (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\passport\lib\middleware\authenticate.js:360:16)
at authenticate (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\passport\lib\middleware\authenticate.js:361:7)
at Layer.handle [as handle_request] (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\layer.js:95:5)
at trim_prefix (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\index.js:317:13)
at C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\index.js:284:7
at Function.process_params (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\index.js:335:12)
at next (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\index.js:275:10)
at initialize (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\passport\lib\middleware\initialize.js:66:5)
at Layer.handle [as handle_request] (C:\Users\ZerimexPC\Downloads\rbxfleet\node_modules\express\lib\router\layer.js:95:5)

I think, Your issue is with passport session. You need to use express session before it for it to work properly.

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM