2012-02-28 12 views
2

私はexpressjsと[email protected]をセッション用のMongoStoreとして使用しています。Node.js、無限ループのセッション

セッションコードが正常に機能していました。ノードと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

+0

エラーメッセージは永遠に送信されます。発送を続ける。 – murvinlai

+0

Connectバージョンは何ですか?私はこれが最近更新されたと考えており、後方互換性に欠けるかもしれません。 –

答えて

4

ちょうどそのための一時的な解決策を得ました。別のnoder "jacobstr"

は、この参照から:だからhttps://github.com/kcbanner/connect-mongo/issues/29#issuecomment-4233108

を、私はnode_modules /接続-Mongoのフォルダに移動します。そのようなpackage.jsonを編集してください:https://github.com/jacobstr/connect-mongo/blob/master/package.json(1回の変更:< 2)。

その後、そのフォルダ内に、sudoのNPM -d

をインストールし実行し、すべてが動作します。 :)

2

私は同じ問題に遭遇しました。これは、異なるバージョンのconnectを使用するexpressおよびconnect-mongoによって引き起こされたと考えられ、これらの異なるバージョンはcookieParserのメソッドシグネチャが異なります。 connect-mongoが使用しているバージョンでは、セッションデータに署名するための "秘密"キーが渡されると予想されますが、バージョンエクスプレスの使用はそれを提供しません。

GitHubで接続2.0をサポートするように更新されていますが、まだnpmで利用できません。