我使用expressjs和connect-mongo@0.1.7作为会话的MongoStore。
会议代码正在发挥作用。但是在我将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 :(得分:4)
刚刚得到了临时解决方案。来自另一个人“jacobstr”
请参阅:https://github.com/kcbanner/connect-mongo/issues/29#issuecomment-4233108
所以,我去了node_modules / connect-mongo文件夹。像这样编辑package.json:https://github.com/jacobstr/connect-mongo/blob/master/package.json(只有一个更改:< 2)。
然后在该文件夹中,运行sudo npm install -d
然后一切正常。 :)答案 1 :(得分:2)
我遇到了同样的问题。我相信这是由express和connect-mongo使用不同版本的连接引起的,那些不同的版本对于cookieParser有不同的方法签名。 connect-mongo版本正在使用expect传递一个“秘密”密钥来签署会话数据,但版本快递使用不提供它。
有一个更新要在GitHub上表达以支持connect 2.0,但它还没有通过npm提供。