Warning: connect.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process
Solution 1
I hope this would help to someone who's struggling the same problem as mine . Just dug it by myself .
//-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
});
Solution 2
Using cookie-session
instead of express-session
solved this issue for me.
You store the session on the client and not on the server with cookies.
Simply:
- Install it with
npm install cookie-session
- Change
var session = require('express-session');
to
var session = require('cookie-session');
Solution 3
It's all about storing sessions, you should add a storing system that store sessions into your database. This help your app to manage sessions.
For example, in mongodb you can use connect-mongo, you should found a store package and for other databases.
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)
}));
Comments
-
Ginxxx almost 3 years
Good day guys here is my code :
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 } }));
this code always returns on my log a :
Warning: connect.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process.
i tried googling about it but i don't seems to understand some tutorials . Sorry for my bad english.