2013-07-11 6 views
4

Я получаю ошибки лексем CSRF ..TypeError: Не удается прочитать свойство '_csrf' неопределенной

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.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); 
}); 
+0

У меня нет идеи, почему, но вот почему я получил эту ошибку: если вы поместите cookieParser после плагина 'csrf', он даст ту же ошибку. –

ответ

8

Возможно, это поможет кому-то еще, не уверен, что для меня это было той же самой причиной, что и для ОП. Однако эта проблема возникла после перезагрузки моего компьютера, и после непродолжительного времени я понял, что это потому, что Redis (я использовал connect-redis в качестве хранилища сеансов) не перезапускался автоматически.

Другими словами, кажется, что TypeError: Cannot read property '_csrfSecret' of undefined или csrf of undefined возникает, когда магазин сеансов недоступен.

+1

Спасибо за ответ Андреас. У меня была точно такая же проблема. Shutdown redis в пятницу и забыл запустить его в понедельник. – Rob

+1

Да, я не могу поверить, что меня снова сожгли! -_- Спасибо, Андреас. Я выпекаю сообщение об ошибке в Sails, чтобы поймать этот случай. – mikermcneil

+1

HA! Год спустя, тот же проект, та же ошибка, googled, нашел мой собственный пост ... –

Смежные вопросы