노드에서 세션 및 에러 핸들링시 주의할점

몇 시간을 삽질햇다.  -_-;;

분명 API 문서를 보면서 가이드 따라 잘 했는데..

도대체 왜 세션이 안되는거야~!! 라고 버럭질햇는데..

API 문서를 꼼꼼히 보지 않으면,.. 다들 고생할듯싶다.

1. 세션 설명
http://expressjs.com/guide.html#session-support 

2. 에러 핸들링
http://expressjs.com/guide.html#error-handling 

자바스크립트가 스크립팅 언어라는 사실을 다시금 일깨워준다.
무엇을 먼저 실행하느냐에 따라,.. 결과가 달라진다.
명심하자!

1) 제대로 된 설정

/**
 * Express 서버 설정
 */
app.configure(function() {
app.use(express.cookieParser());
app.use(express.session({store: sessionStore, secret: ‘secret’, key: ‘express.sid’}));
app.use(express.errorHandler({dumpExceptions : false, showStack : true}));
app.use(app.router); // 반드시 라우터 설정 이전에 에러와 세션이 설정되어야한다.
app.register(‘.html’, require(‘ejs’));
app.set(‘views’, __dirname + ‘/views’);
app.set(‘view engine’, ‘html’);
});

2) 잘못 된 설정: 뭔가.. register, set, use 처럼 보기 좋으라고 각 설정을 묶어놨는데.. 잘 못된 설정이다.

/**
 * Express 서버 설정
 */
app.configure(function() {
app.register(‘.html’, require(‘ejs’));

app.set(‘views’, __dirname + ‘/views’);
app.set(‘view engine’, ‘html’);

app.use(express.cookieParser());
app.use(express.session({store: sessionStore, secret: ‘secret’, key: ‘express.sid’}));
app.use(app.router);
          app.use(express.errorHandler({dumpExceptions : false, showStack : true}));
});