2

ポート 5000 で実行している Express.js にアプリケーションがあります。最近、何か問題が発生しましたが、Mountain Lion へのアップグレードに関連している可能性があります。わからない。

アプリを簡素化するために、現在 GET ルートのサンプルを 1 つだけセットアップしています。

  app.get('/', function(req, res){
    console.log('made it here');
    res.end('Hey there');
  });

何らかの理由で、Web ブラウザー (chrome、safari) 経由で接続しようとすると、複数回接続できなくなります。しかし、ポートに直接 telnet で接続して GET / を発行すると、期待していた応答が得られます (セッションが実行されていないためだと思います)。

また、セッション シークレットを変更すると、ブラウザ経由で 1 回/もう一度接続できます。その後、シークレットを再度変更するまで、その後の更新がルートにヒットすることはありません (そのルートに対して 200 が記録されることはありません)。

セッションをセットアップする方法は次のとおりです。

app.use(express.cookieParser());
var mongoCon = require('connect-mongodb');
var session = express.session({
  store: new mongoCon({
      db: mongoose.connection.db
    , maxAge: 300000
  }), secret: 'donut' 
});
app.use(session);

編集: セッション ストアに Mongo の代わりに MemoryStore を使用すると、正常に動作します。

繰り返しますが、これは何週間もうまく機能しています。最近、Mountain Lion にアップデートしました。npms も再インストールしましたが、以前と同じバージョンの connect-mongodb、mongoose、express などを実行していることを確認しました。Ubuntuボックスでこれと同じコードベースを実行していますが、問題ないようです。だから多分それはMacの問題です。

これは詳細があまりないクレイジーな質問だと思いますが、ここでちょっと途方に暮れています。何を探すべきかについてのアイデアはありますか?

4

1 に答える 1

2

使用していた Mongoose のバージョンに関連していることがわかりました。Mac では最新バージョンの mongoose (3.0.2) を使用し、Ubuntu では 2.7.2 を使用していました。mongoose.connection.dbオブジェクトの何かが変更されたと推測しています。機会があれば検証します。

私はそれを試したと思いましたが、ある時点でバージョンを混同したに違いありません.

うまくいけば、Mongoose チームの誰か (おそらく aheckmann) がこれを見て、自分で修正できるものなのか、connect-mongodb の問題なのかなどを知らせてくれるでしょう。

于 2012-08-23T20:48:45.547 に答える