2

server.js

var express=require('./config/express');
var app=express();
app.listen(3000);

expressjs

var express=require('express'),
        cookieParser = require('cookie-parser'),
        session=require('express-session');

var app=express();
    var routes=require('../app/routes/index.server.routes');
    routes(app);

    app.use(cookieParser());
        app.use(session({
            saveUninitialized: true,
            resave: true,
            secret: "This is a secret"
        }));

routes.js

module.exports=function(app){
    var indexController=require('../controllers/index.server.controller');
    app.get('/',indexController.render);
}

controller

exports.render=function(request,response){
    if(request.session.lastVisit){
        console.log(request.session.lastVisit);
    }
    request.session.lastVisit=new Date();
    response.render('index',{
        model:'lokesh'
    })
}

error

Cannot set property 'lastVisit' of undefined
   at exports.render (C:\Users\phani\Desktop\Node\app\controllers\index.server.controller.js:9:30)
   at Layer.handle [as handle_request] (C:\Users\phani\Desktop\Node\node_modules\express\lib\router\layer.js:76:5)
   at next (C:\Users\phani\Desktop\Node\node_modules\express\lib\router\route.js:100:13)
   at Route.dispatch (C:\Users\phani\Desktop\Node\node_modules\express\lib\router\route.js:81:3)
   at Layer.handle [as handle_request] (C:\Users\phani\Desktop\Node\node_modules\express\lib\router\layer.js:76:5)
   at C:\Users\phani\Desktop\Node\node_modules\express\lib\router\index.js:227:24
   at Function.proto.process_params (C:\Users\phani\Desktop\Node\node_modules\express\lib\router\index.js:305:12)
   at C:\Users\phani\Desktop\Node\node_modules\express\lib\router\index.js:221:12
   at Function.match_layer (C:\Users\phani\Desktop\Node\node_modules\express\lib\router\index.js:288:3)
   at next (C:\Users\phani\Desktop\Node\node_modules\express\lib\router\index.js:182:10)

I install the required modules needed. Still it could not create a session. can someone point out the mistake. Updated complete code

lch
  • 4,569
  • 13
  • 42
  • 75
  • What version of express are you using? – xdc Nov 11 '15 at 19:28
  • "express" : "~4.8.8" – lch Nov 11 '15 at 19:30
  • This line `router= require('router');` what is this `router` module? From your code it's not very clear how you are attaching your action to a route. – xdc Nov 11 '15 at 19:35
  • In astack overflow post it was written that in order to use session we need cookieparse aswell as router modules. so i used that – lch Nov 11 '15 at 19:37
  • What `router` module? Express 4 doesn't have any `router` module. You use `express.Router()` instead if you want a `Router` object. Can you add the code on how you are actually attaching your `render` action to your app? – xdc Nov 11 '15 at 19:56
  • Forget about that router. even i dont know about that . updated complete code – lch Nov 11 '15 at 20:00

1 Answers1

4

Register your routes after you register your middlewares:

var app=express();
var routes=require('../app/routes/index.server.routes');

app.use(cookieParser());
app.use(session({
    saveUninitialized: true,
    resave: true,
    secret: "This is a secret"
}));
routes(app);
xdc
  • 116
  • 1