2014-03-01 2 views
0

세션 변수를 사용하는 Express 및 Node.js에서 쉽게 proyect를 만들고 있는데 브라우저에 오류가 있으며 그 이유를 모르겠습니다. 오류는 다음과 같습니다Node.js + Express의 세션 변수 오류

Express 
500 TypeError: Cannot read property 'variable' of undefined 
at /Users/jorgeregidor/zzz/app.js:44:24 
etc.... 

그것은 당신이 변수 세션()을 선언하지 않을 때 발생 같은 오류입니다,하지만 당신은 코드에서 볼 수 있듯이 다음과 같이 아래에 정의되어 있습니다

응용 프로그램을. 사용 (express.cookieParser()); app.use (express.session ({secret : "secret"})));

하여 app.js 코드의 나머지 부분은 다음과 같습니다

var express = require('express'); 
var routes = require('./routes'); 
var user = require('./routes/user'); 
var database = require('./routes/database') 
var http = require('http'); 
var path = require('path'); 


var app = express(); 

// all environments 
app.set('port', process.env.PORT || 3000); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.json()); 
app.use(express.urlencoded()); 
app.use(express.methodOverride()); 
app.use(app.router); 
app.use(express.cookieParser()); 
app.use(express.session({secret : "secret"})); 
app.use(express.static(path.join(__dirname, 'public'))); 

// development only 
if ('development' == app.get('env')) { 
     app.use(express.errorHandler()); 
} 

app.get('/', routes.index); 


app.get('/users', database.show); 
app.post('/users', database.add); 
app.post('/users/del', database.del); 

app.get('/autenticacion',database.autenticar); 

app.post('/autenticacion',function(req, res){ 
req.session.variable = req.body.name; **//ERROR** 
res.redirect('/secreta'); 
}); 

app.get('/secreta',function (req,res){ 
if (typeof(req.session.variable) != "undefined") **//ERROR** 
    { res.render('secreta',{titulo:'secreta'});} 
else {res.rendirect('/autenticar');} 
}); 



http.createServer(app).listen(app.get('port'), function(){ 
    console.log('Express server listening on port ' + app.get('port')); 
}); 

답변

1

app.router이 express.session 전에 시작됩니다 때문입니다. 올바른 순서로 일을하지 않는 것입니다.

변경 : 이것에

app.use(app.router); 
app.use(express.cookieParser()); 
app.use(express.session({secret : "secret"})); 

:

app.use(express.cookieParser()); 
app.use(express.session({secret : "secret"})); 
app.use(app.router); 
+0

덕분에 당신에게 너무 많은! – jorgeregidor

+0

de nada mi amigo! :) –