nodejs表示会话错误

时间:2013-12-03 16:05:35

标签: node.js session express

我用nodejs写了一个演示网站。在文件app.js中,我使用了express.session

案例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 个答案:

答案 0 :(得分:1)

Express中的中间件订单,因为它们按您定义的顺序执行。在您的情况下,cookieParser中间件会添加session中间件使用的一些信息。

您可以查看connect's documentation

  

但是,会话数据不会保存在cookie本身中   使用cookie,所以我们必须使用cookieParser()   session()之前的中间件。