2012-02-28 90 views
2

我使用expressjs和[email protected]作爲會話的MongoStore。Node.js,無限循環會話

會發生什麼,會話代碼正在工作。但是在將node和npm升級到最新版本並將Mongo升級到2.0.2之後,如果我將express.session(store:new MongoStore)升級,那麼它將運行一個無限循環。任何想法發生了什麼?

這裏是我的代碼:

express.createServer(
    express.cookieParser(), 
    express.bodyParser(), 
    express.session({ secret: cfg.session_secret, 
    cookie: { domain: 'mydomain.com' }, 
    store:new MongoStore({ 

    db: cfg.db_session_name, 
    host: cfg.db_ip, 
    port: cfg.db_port 
    }) 
    }) 
) 

以下是錯誤:

TypeError: Not a string or buffer 
at Object.createHmac (crypto.js:129:21) 
at Object.sign (/node_modules/connect-mongo/node_modules/connect/lib/utils.js:135:6) 
at Object.serialize (/node_modules/connect-mongo/node_modules/connect/lib/middleware/session/cookie.js:115:17) 
at ServerResponse.writeHead (/node_modules/express/node_modules/connect/lib/middleware/session.js:265:46) 
at ServerResponse._implicitHeader (http.js:808:8) 
at ServerResponse.end (http.js:645:10) 
at next (/node_modules/express/node_modules/connect/lib/http.js:167:13) 
at pass (/node_modules/express/lib/router/index.js:219:24) 
at nextRoute (/node_modules/express/lib/router/index.js:209:7) 
at callbacks (/node_modules/express/lib/router/index.js:274:11) 
+0

我很困惑,你說你得到一個無限循環,但也給了一個無關的錯誤信息? – loganfsmyth 2012-02-28 20:40:05

+0

它只會永遠發送錯誤信息。繼續發送。 – murvinlai 2012-02-28 22:19:24

+0

什麼是您的連接版本?我相信這是最近更新的,它可能缺乏一些向後兼容性。 – 2012-02-29 06:31:31

回答

2

我碰到了同樣的問題。我相信這是由express和connect-mongo使用不同版本的連接引起的,而這些不同版本對cookieParser具有不同的方法簽名。版本connect-mongo使用期望被傳遞一個「祕密」密鑰來簽署會話數據,但版本快速使用不提供它。

在GitHub上有更新來支持連接2.0,但它不能通過npm獲得。