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 } }
проверьте это SO thre ad http://stackoverflow.com/questions/21093787/req-session-undefined-and-req-session-user-id-not-working –
Я реализовал это решение. 'Ошибка: большинство промежуточных программ (например, сеанс) больше не связаны с Express и должны устанавливаться отдельно. Pl легкость см. Https: // github.com/senchalabs/connect # middleware.' Он плачет в express.session. Я считаю, что я уже установил экспресс-сессию и поместил ее в package.json? Может ли это быть проблемой? –