2012-02-28 110 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获得。