2013-12-03 3 views
1

Я написал демо-сайт с узлами nodejs. В файле app.js я использовал express.sessionОшибка узла nodejs express

Случай 1:

app.use(express.cookieParser()) 
app.use(express.session({ secret: "whatever" })); 
//this code is working 

Случай 2:

app.use(express.session({ secret: "whatever" })); 
app.use(express.cookieParser()); 
//this is not correct 

Журнал ошибки:

Express 
500 TypeError: Cannot read property 'connect.sid' of undefined 
at Object.session [as handle] (D:\web\nodejs\Weibo\node_modules\express\node_modules\connect\lib\middleware\session.js:239:32) 
at next (D:\web\nodejs\Weibo\node_modules\express\node_modules\connect\lib\proto.js:193:15) 
at Object.favicon [as handle] (D:\web\nodejs\Weibo\node_modules\express\node_modules\connect\lib\middleware\favicon.js:77:7) 
at next (D:\web\nodejs\Weibo\node_modules\express\node_modules\connect\lib\proto.js:193:15) 
at Object.handle (D:\web\nodejs\Weibo\node_modules\express-partials\index.js:94:5) 
at next (D:\web\nodejs\Weibo\node_modules\express\node_modules\connect\lib\proto.js:193:15) 
at Object.expressInit [as handle] (D:\web\nodejs\Weibo\node_modules\express\lib\middleware.js:30:5) 
at next (D:\web\nodejs\Weibo\node_modules\express\node_modules\connect\lib\proto.js:193:15) 
at Object.query [as handle] (D:\web\nodejs\Weibo\node_modules\express\node_modules\connect\lib\middleware\query.js:44:5) 
at next (D:\web\nodejs\Weibo\node_modules\express\node_modules\connect\lib\proto.js:193:15) 

ответ

1

Middleware заказ независимо от того, в экспресс, так как они выполняются в том порядке, в котором вы их определили. В вашем случае промежуточное ПО cookieParser добавляет некоторую информацию, которая используется промежуточным программным обеспечением session.

Вы можете проверить connect's documentation:

данные сеанса не сохраняются в самом куки используются однако печенье, поэтому мы должны использовать cookieParser() промежуточного слоя до начала сессии().