2016-12-07 44 views
0

我試圖添加connect-mongo以便在nodeJS重新啓動時保存會話。ReferenceError:會話未使用('connect-mongo')(會話)定義,

每增加我的文檔: MongoStore = require('connect-mongo')(session),

,並在我的require('express-session')我加

store: new MongoStore({ 
    url: mongooseDB, 
    touchAfter: 24 * 3600 
}) 

和註釋掉app.use(passport.session());

我得到一個錯誤:不定義會話:引發ReferenceError它指向MongoStore = require('connect-mongo')(session),

我已經添加了我的app.js文件以供參考。我怎樣才能解決這個問題?

'use strict'; 
 
const express = require('express'), 
 
    app = express(), 
 
    bodyParser = require('body-parser'), 
 
    mongoose = require('mongoose'), 
 
    MongoStore = require('connect-mongo')(session), 
 
    passport = require('passport'), 
 
    flash = require('connect-flash'), 
 
    LocalStrategy = require('passport-local'), 
 
    methodOverride = require('method-override'), 
 
    logger = require('morgan'), 
 
    cookieParser = require('cookie-parser'), 
 
    User = require('./models/user'), 
 
    faker = require('faker'), 
 
    path = require('path'); 
 

 
const indexRoute = require('./routes/index'), 
 
    usersRoute = require('./routes/users'), 
 
    giftsRoute = require('./routes/gifts.js'), 
 
    searchRoute = require('./routes/search'); 
 

 
const mongooseDB = 'mongodb://localhost/giftcashing'; 
 

 
mongoose.connect(mongooseDB); 
 

 
// view engine setup 
 
app.set('views', path.join(__dirname, 'views')); 
 
app.set('view engine', 'ejs'); 
 

 
app.use(logger('dev')); 
 
app.use(bodyParser.urlencoded({extended: true})); 
 
app.use(cookieParser()); 
 
app.use(express.static(path.join(__dirname, 'public'))); 
 
app.use('/bower_components', express.static(__dirname + '/bower_components')); 
 
app.use(methodOverride("_method")); 
 
app.use(flash()); 
 

 
app.use(require('express-session')({ 
 
    secret: 'anything', 
 
    resave: false, 
 
    saveUninitialized: false, 
 
    store: new MongoStore({ 
 
     url: mongooseDB, 
 
     touchAfter: 24 * 3600 
 
    }) 
 
})); 
 

 
// PASSPORT CONFIGURATION 
 
app.use(passport.initialize()); 
 
// app.use(passport.session()); 
 

 
// use static authenticate method of model in LocalStrategy 
 
passport.use(new LocalStrategy(User.authenticate())); 
 

 
// use static serialize and deserialize of model for passport session support 
 
passport.serializeUser(User.serializeUser()); 
 
passport.deserializeUser(User.deserializeUser()); 
 

 
app.use(function (req, res, next) { 
 
    res.locals.currentUser = req.user; 
 
    res.locals.error = req.flash('error'); 
 
    res.locals.success = req.flash('success'); 
 
    next(); 
 
}); 
 

 
// catch 404 and forward to error handler 
 
// app.use(function(req, res, next) { 
 
// var err = new Error('Not Found'); 
 
// err.status = 404; 
 
// next(err); 
 
// }); 
 

 
// error handler 
 
app.use(function(err, req, res, next) { 
 
    // set locals, only providing error in development 
 
    res.locals.message = err.message; 
 
    // render the error page 
 
    res.status(err.status || 500); 
 
    res.render('error'); 
 
}); 
 

 
app.use('/', indexRoute); 
 
app.use('/users', usersRoute); 
 
app.use('/gifts', giftsRoute); 
 
app.use('/search', searchRoute); 
 

 
module.exports = app;

回答

2

變量session當你調用 MongoStore = require('connect-mongo')(session)未初始化。

在初始化MongoStore之前添加session = require('express-session')

+0

你真棒:)這工作:)我也不得不取消註釋app.use(passport.session());因爲某些原因,它不讓我登錄,但我解決了它。 :) 你真棒。 –