2016-12-07 23 views
0

nodeJSが再起動したときにセッションを保存するためにconnect-mongoを追加しようとしています。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

あなたが MongoStore = require('connect-mongo')(session)を呼び出しているとき、変数sessionが初期化されていません。

session = require('express-session')を追加してからMongoStoreを追加してください。

+0

あなたは素晴らしいです:)それは働いていました:)私もapp.use(passport.session())のコメントを外さなければなりませんでした。何らかの理由で私にログインさせていないのですが、私はそれをうまく処理しました。 :)あなたは素晴らしいです。 –

関連する問題