2012-03-29 35 views
8

我正在嘗試使用內置的cookieSession連接對象,但我無法讓它與express一起正常工作。如何在express中使用cookieSession

我有這樣的應用程序:

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] 

任何想法?

感謝

+0

你使用connect.cookieSession代替express.cookieSession什麼特殊原因? – 2013-04-06 09:27:44

+1

@AndersBornholm這個問題已經很老了,可能在那個時候沒有提供 – mihai 2013-05-03 21:06:15

回答

1

你是什麼connect模塊的版本? cookieSession中間件在2.0.0版中首次添加。運行npm list|grep connect以確保您的connect版本至少2.0.0或更高版本。

+0

Express連接1.8.6,所以是的,這可能是爲什麼它不起作用。謝謝 – mihai 2012-03-30 21:27:19

+2

Express 3自帶連接2.7。 – UpTheCreek 2013-02-28 14:39:40

1

我也有這個問題。原來,everyauth是連接1.7.5連接的模塊之一,在npm刪除everyauth之後,所有問題都消失了。

12

會話不會工作,除非你在這個次序,這3:

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

工作等之後,一個魅力。

看到:https://stackoverflow.com/a/10239147/2454820

+0

我得到錯誤:Cookie會話需要'祕密'選項 – Maslow 2013-08-08 15:19:10

+0

只需添加一個祕密:app.use(express.cookieSession({secret:'mysecret'})); – 2013-08-21 13:54:05

+0

刪除'app.use(app.router)',它爲我工作。 (也不得不添加祕密) – 2014-03-19 04:11:34

相關問題