我在 Express.js 中有一个应用程序,正在端口 5000 上运行。我已经研究它一段时间了,一切都很好。最近出了点问题,可能与升级到 Mountain Lion 有关。我不知道。
为了简化应用程序,我现在只设置了一个示例 GET 路由:
app.get('/', function(req, res){
console.log('made it here');
res.end('Hey there');
});
出于某种原因,当我尝试通过网络浏览器(chrome、safari)连接时,它不会连接多次。但是,如果我直接通过 telnetting 到端口并发出 GET/进行连接,我会得到我期望的响应(因为我假设没有 session 在运行)。
此外,如果我更改 session key ,我可以通过浏览器一次/再次连接到它,然后后续刷新永远不会命中该路由(该路由永远不会记录 200),直到我再次更改 key 。
以下是我设置 session 的方式:
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 作为 session 存储,它可以正常工作。
同样,这几周以来一直运行良好。我最近更新到了 Mountain Lion。我还重新安装了 npms,但确认我正在运行与以前相同版本的 connect-mongodb、mongoose、express 等。我在 Ubuntu 机器上运行了相同的代码库,看起来不错。所以可能是 Mac 的问题。
我意识到这是一个疯狂的问题,没有太多好的细节,但我在这里有点不知所措。关于寻找什么有什么想法吗?
最佳答案
我发现这和我使用的Mongoose版本有关。我在 Mac 上使用最新版本的 mongoose (3.0.2),在 Ubuntu 上使用 2.7.2。我猜测 mongoose.connection.db 对象中的某些内容已更改。当我有机会时我会验证。
我以为我已经尝试过了,但我一定在某个时候混淆了版本。
希望来自 Mongoose 团队的人(也许是 ahemeckmann)会看到这个,并让我知道我是否可以解决这个问题,或者是否是 connect-mongodb 的问题等。
关于macos - 通过 Express 和 MongoDB 使用 session ,为什么我只能连接一次路由,除非我更改 session key ?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12096068/