Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

TypeError: Cannot read property '_csrf' of undefined

Tags:

express

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);
});
like image 564
JSBhalodia Avatar asked Jul 11 '13 14:07

JSBhalodia


1 Answers

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.

like image 102
Andreas Hultgren Avatar answered Nov 20 '22 13:11

Andreas Hultgren