WardenGrey Ответов: 0

Nodejs/express typeerror : passport-authenticate-это не функция


Здравствуйте, я застрял на различных проблемах, следуя руководству о том, как настроить корзину покупок в nodeJS/Express/MongoDb. Гиду уже несколько лет , и я безуспешно пытался найти помощь в комментариях. Моя проблема заключается в том , что при попытке запустить сервер я получаю сообщение об ошибке : TypeError : passport.authenticate - это не функция.

это относится к моему index.js файл, который выглядит следующим образом :

var express = require('express');

var router = express.Router();

var Product = require('D:/Other/Projects/Code/Powershell/shopping-cart/models/product');

var csrf = require('csurf');

var passport = require('D:/Other/Projects/Code/Powershell/shopping-cart/config/passport.js');

var csrfProtection = csrf();

router.use(csrfProtection);

/* GET home page. */

router.get('/', function(req, res, next) {

  Product.find(function(err, docs) {

    var productChunks = [];

    var chunkSize = 3;

    for (var i = 0; i < docs.length; i += chunkSize) {

           productChunks.push(docs.slice(i, i + chunkSize));

    }

    res.render('shop/index', { title: 'Shopping Cart', products: productChunks });

  });

});

router.get('/user/signup', function (req, res, next) {

   res.render('user/signup', {csrfToken: req.csrfToken()});

});

router.post('/user/signup', passport.authenticate('local.signup'), {

  successRedirect: '/user/profile',

  failureRedirect: '/user/signup',

  failureFlash: true

});

router.get('/user/profile', function(req, res, next) {

  res.render('user/profile');

});

module.exports = router;


И вот как мой app.js файл ищет :

var createError = require('http-errors');

var express = require('express');

var path = require('path');

var cookieParser = require('cookie-parser');

var logger = require('morgan');

var routes = require('./routes/index')(passport);

var indexRouter = require('./routes/index');

var usersRouter = require('./routes/users');

var expressHbs = require('express-handlebars');

var mongoose =require('mongoose');

var app = express();

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

var passport = require('passport');

var flash = require('connect-flash');

const bodyParser = require('body-parser');

mongoose.connect('mongodb://localhost:27017/shopping', {useNewUrlParser: true, useUnifiedTopology: true});

mongoose.connection.on('error', err => {

  throw 'failed to connect to MongoDB';

});

require('passport');

// view engine setup

app.engine('.hbs', expressHbs({defaultLayout: 'layout', extname:'.hbs'}))

app.set('view engine', '.hbs');

app.use(bodyParser.urlencoded({extended: false}));

app.use(bodyParser.json());

app.use(logger('dev'));

app.use(express.json());

app.use(express.urlencoded({ extended: false }));

app.use(cookieParser());

app.use(session({secret: 'mysupersecret', resave: false, saveUninitialized: false}))

app.use(flash());

app.use(passport.initialize());

app.use(passport.session());

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

app.use('/', indexRouter);

app.use('/users', usersRouter);

// catch 404 and forward to error handler

app.use(function(req, res, next) {

  next(createError(404));

});

// error handler

app.use(function(err, req, res, next) {

  // set locals, only providing error in development

  res.locals.message = err.message;

  res.locals.error = req.app.get('env') === 'development' ? err : {};

  // render the error page

  res.status(err.status || 500);

  res.render('error');

});

module.exports = app;



Есть какие-нибудь намеки на то, в чем может быть проблема? вся помощь ценится, спасибо!

Что я уже пробовал:

Добавление
var routes = require('./routes/index')(passport);


Я читал в некоторых сообщениях, что это исправило проблему, но в моем случае это не исправило ее.

0 Ответов