Warning: connect.session() MemoryStore is not designed for a production environment, as it will leak memory, and will not scale past a single process

25,010

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:

  1. Install it with npm install cookie-session
  2. 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)
}));
Share:
25,010
Ginxxx
Author by

Ginxxx

E A T, C O D E, S L E E P

Updated on July 17, 2021

Comments

  • Ginxxx
    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.