2

我在 Express.js 中有一个应用程序,我在端口 5000 上运行。我已经研究了一段时间,一切都很好。不过最近出了点问题,可能与升级到 Mountain Lion 有关。我不知道。

为了简化应用程序,我现在只设置了一个示例 GET 路由:

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

出于某种原因,当我尝试通过网络浏览器(chrome、safari)进行连接时,它不会多次连接。但是,如果我通过 telnet 直接连接到端口并发出 GET / ,我会得到我期望的响应(因为我假设没有会话在播放)。

此外,如果我更改我的会话密码,我可以通过浏览器再次连接到它,然后后续刷新永远不会命中路由(该路由永远不会记录 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);

编辑:如果我使用 MemoryStore 而不是 Mongo 作为我的会话存储,它工作正常。

同样,这已经好几个星期了。我最近更新到山狮。我还重新安装了 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 回答