如何在express中使用cookieSession

时间:2012-03-29 12:55:24

标签: node.js express connect

我正在尝试使用内置的cookieSession连接对象,但我无法使用express来正常工作。

我有这个应用程序:

var express = require('express');
var connect = require('connect');

var app = express.createServer();

app.configure(function() {
  app.use(express.logger());
  app.use(express.bodyParser());
  app.use(express.methodOverride());
  app.use(express.cookieParser('whatever'));
  app.use(connect.cookieSession({ cookie: { maxAge: 60 * 60 * 1000 }}));
});

app.get('/', function(req, res) {
    res.render('root');
});

app.listen(3000);

我收到了这个错误:

TypeError: Cannot read property 'connect.sess' of undefined
    at Object.cookieSession [as handle] 

有什么想法吗?

感谢

3 个答案:

答案 0 :(得分:13)

除非您按此顺序拥有这3个,否则会话将无效:

app.use(express.cookieParser());
app.use(express.cookieSession());
app.use(app.router);

之后像魅力一样工作。

请参阅:https://stackoverflow.com/a/10239147/2454820

答案 1 :(得分:2)

connect模块的版本是什么?版本2.0.0中首次添加了cookieSession中间件。运行npm list|grep connect以确保您的connect版本至少为2.0.0或更高版本。

答案 2 :(得分:1)

我也有这个问题。原来,Everyauth是连接connect 1.7.5的模块之一,在npm删除everyauth后,所有问题都消失了。