2016-03-03 8 views
0

main.js (только соответствующие части)Node.js переменная req.session неопределенными

var express = require('express'); 
var app = require('express')(), 
    expressSession = require('express-session'), 
    cookieParser = require('cookie-parser'); 
var bodyParser = require('body-parser'); 

// Create application/x-www-form-urlencoded parser 
var urlencodedParser = bodyParser.urlencoded({ extended: false }) 

// Access Middleware 
var connect = require('connect'); 
var http = require('http'); 
var session = require('express-session'); 

app.use(express.static('public')); 
app.use(expressSession({ 
    secret: 'SECKEY', 
    resave: true, 
    saveUninitialized: true 
})); 

app.post('/process_post', urlencodedParser, function (req, res) { 
    // Prepare output in JSON format 
    var response = { 
     first_name:req.body.first_name, 
     last_name:req.body.last_name 
    }; 
    console.log(response); 


    var post = req.body; 
    if(post.first_name === 'u' && post.last_name === 'p') { 
     res.session.user_id = 3; 
     res.redirect('/home'); 
    } else { 
     res.send('INVALID'); 
    } 

    res.end(JSON.stringify(response)); 
}); 

Это ошибка, я получаю:

TypeError: Cannot set property 'user_id' of undefined 
    at D:\Users\Winston\Code\NodeJS Projects\Sample\main.js:43:29 
    at Layer.handle [as handle_request] (D:\Users\Winston\Code\NodeJS Projects\Sample\node_modules\express\lib\router\layer.js:95:5) 
    at next (D:\Users\Winston\Code\NodeJS Projects\Sample\node_modules\express\lib\router\route.js:131:13) 
    at D:\Users\Winston\Code\NodeJS Projects\Sample\node_modules\body-parser\lib\read.js:121:5 
    at invokeCallback (D:\Users\Winston\Code\NodeJS Projects\Sample\node_modules\body-parser\node_modules\raw-body\index.js:262:16) 
    at done (D:\Users\Winston\Code\NodeJS Projects\Sample\node_modules\body-parser\node_modules\raw-body\index.js:251:7) 
    at IncomingMessage.onEnd (D:\Users\Winston\Code\NodeJS Projects\Sample\node_modules\body-parser\node_modules\raw-body\index.js:308:7) 
    at IncomingMessage.emit (events.js:104:17) 
    at _stream_readable.js:908:16 
    at process._tickCallback (node.js:355:11) 

req.session не работает, но Кажется, я все определил. Я установил промежуточное программное обеспечение для подключения и экспресс-сессии. Как я могу отлаживать такие проблемы в будущем?

EDIT 1: Распечатайте req.session

{ cookie: 
    { path: '/', 
    _expires: null, 
    originalMaxAge: null, 
    httpOnly: true } } 
{ first_name: 'u', last_name: 'p' } 
{ cookie: 
    { path: '/', 
    _expires: null, 
    originalMaxAge: null, 
    httpOnly: true } } 
+0

проверьте это SO thre ad http://stackoverflow.com/questions/21093787/req-session-undefined-and-req-session-user-id-not-working –

+0

Я реализовал это решение. 'Ошибка: большинство промежуточных программ (например, сеанс) больше не связаны с Express и должны устанавливаться отдельно. Pl легкость см. Https: // github.com/senchalabs/connect # middleware.' Он плачет в express.session. Я считаю, что я уже установил экспресс-сессию и поместил ее в package.json? Может ли это быть проблемой? –

ответ

3

Вы звоните res.session не req.session

+0

Спасибо за ответ, я исправил его, но точно такая же ошибка сохраняется. –

1

Вы можете изменить код ниже:

res.session.user_id = 3; 

в

req.session.user_id = 3; 
+0

Спасибо за ответ, я исправил его, но точно такая же ошибка сохраняется –

+0

Можете ли вы показать результат req.session и свою ошибку для меня? – DinhNC

+1

вы можете проверить информацию о переменной «req.session.identify»? Если он существует, вы можете увидеть user_id из вас в этом объекте. – DinhNC