JSBhalodia
JSBhalodia

Reputation: 259

TypeError: Cannot read property '_csrf' of undefined

I'm getting CSRF token errors..

TypeError: Cannot read property '_csrf' of undefined at Object.handle (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/middleware/csrf.js:45:28) at next (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.session [as handle] (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/middleware/session.js:221:66) at next (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.cookieParser [as handle] (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/middleware/cookieParser.js:60:5) at next (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.methodOverride [as handle] (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/middleware/methodOverride.js:37:5) at next (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/proto.js:190:15) at Object.expressValidator [as handle] (/home/nodejs/sites/IcoderStuff/node_modules/express-validator/lib/express_validator.js:148:10) at next (/home/nodejs/sites/IcoderStuff/node_modules/express/node_modules/connect/lib/proto.js:190:15)

Packages ( packages.json )

"express": "3.0.3",
"less-middleware": "0.1.12",
"hbs": "2.3.0",
"express-validator": "0.4.1",
"mongoose" : "3.x",
"node-uuid" : "1.x",
"request" : "2.x",
"async" : "0.2.x",
"date-utils": "1.x",
"jade": "0.31.2",
"xml2js" : "0.2.7",
"MD5" : "1.0.3",
"csv" : "0.3.3",
"nodemailer" : "0.4.4"

Server.js

app.configure(function(){
  app.set('port', process.env.PORT || 8080);
  app.set('views', __dirname);
  app.set('view engine', 'html');
  app.engine('html', require('hbs').__express);
  app.use(express.favicon());
  app.use(express.logger('dev'));
  app.use(express.bodyParser());
  app.use(expressValidator);
  app.use(express.methodOverride());
  app.use(express.cookieParser());
  app.use(express.session({ secret: 'xkvnjiersape', store: store }));
  app.use(express.csrf());
  app.use(express.static(path.join(__dirname, 'public')));
  app.use(require('less-middleware')({ src: __dirname + '/public' }));  
  app.use(require('grunt-contrib-livereload/lib/utils').livereloadSnippet);
  app.use(app.router);
});

Upvotes: 5

Views: 3979

Answers (1)

Andreas Hultgren
Andreas Hultgren

Reputation: 14953

Perhaps this will help someone else, not sure if it was the same cause for me as for the OP. However this problem appeared to me after restarting my computer, and after embarrassingly long time I figured out that it was because Redis (I used connect-redis as session store) didn't restart automatically.

In other words it seems that TypeError: Cannot read property '_csrfSecret' of undefined or csrf of undefined occurs when the session store is unavailable.

Upvotes: 10

Related Questions