警告:connect.session() MemoryStore 不是为生产环境设计的,因为它会泄漏内存,并且不会扩展到



美好的一天,伙计们这是我的代码:

var express = require('express');
var session = require('express-session');
var app = express();
app.set('trust proxy', 1);
app.use(session({
secret: 'secret',
saveUninitialized: true,
resave: false,
maxAge: 1000 * 60 * 15,
cookie:{
secure: true
}
}));

这段代码总是在我的日志上返回 a :

警告:connect.session(( MemoryStore 不是为生产环境设计的,因为它会泄漏内存,并且不会扩展到单个进程之后。

我尝试在谷歌上搜索它,但我似乎不明白一些教程. 对不起,我的英语不好。

使用cookie-session而不是express-session为我解决了这个问题。

您将会话存储在客户端上,而不是使用 cookie 存储在服务器上。

只是:

  1. 使用npm install cookie-session安装它
  2. 改变

    var session = require('express-session');

    var session = require('cookie-session');

我希望这对与我有相同问题的人有所帮助。 只是自己挖的.

//-momery unleaked---------
app.set('trust proxy', 1);
app.use(session({
cookie:{
secure: true,
maxAge:60000
},
store: new RedisStore(),
secret: 'secret',
saveUninitialized: true,
resave: false
}));
app.use(function(req,res,next){
if(!req.session){
return next(new Error('Oh no')) //handle error
}
next() //otherwise continue
});

这一切都与存储会话有关,您应该添加一个将会话存储到数据库中的存储系统。这有助于您的应用管理会话。

例如,在mongodb中你可以使用connect-mongo,你应该找到一个存储包和其他数据库。

https://www.npmjs.com/package/connect-mongo

const session = require('express-session');
const MongoStore = require('connect-mongo')(session);
app.use(session({
secret: 'foo',
store: new MongoStore(options)
}));

相关内容

最新更新