Node.js,无限循环的会话

问题描述 投票:0回答:2

我使用expressjs和[电子邮件受保护]作为会话的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)
node.js mongodb session connect-mongo
2个回答
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

然后一切正常。 :)


2
投票

我遇到了同样的问题。我相信这是由express和connect-mongo使用不同版本的connect引起的,并且这些不同版本的cookieParser有不同的方法签名。 connect-mongo 使用的版本期望传递一个“秘密”密钥来签署会话数据,但 Express 使用的版本不提供它。

GitHub 上有一个更新要表达以支持 connect 2.0,但尚未通过 npm 提供。

© www.soinside.com 2019 - 2024. All rights reserved.