错误日志:" connect.session()MemoryStore不是 专为生产环境而设计,因为它会泄漏 记忆,并且不会扩展到单个过程。"
我正在使用像这样的会议......
app.use(session({
secret: "I am nerdier than most",
saveUninitialized: true,
resave: true,
cookie: { maxAge: 60000 }
}));
`/// using session as global validation //
app.use(function(req, res, next) {
if (req.session && req.session.user) {
db.users.findOne({ email: req.session.user.email }, function(err,
user) {
if (user) {
req.user = user;
delete req.user.password; // delete the password from the
session
req.session.user = user; //refresh the session value
res.locals.user = user;
}
// finishing processing the middleware and run the route
next();
});
} else {
next();
}
})`
如何修复错误?
在本地,我可以正常运行该应用程序。我通过大规模连接到postgres数据库。
答案 0 :(得分:1)
如果您没有明确配置会话商店connect.session()
(您可能应该用express-session
替换,因为后者仍在维护,而前者最后一次更新4年前)使用内存中对象来存储会话。
这不仅会逐渐增加应用程序的内存使用量(这就是警告的内容),而且还意味着如果您的服务器必须重新启动,您的所有部分都将消失。
要解决此问题,您应该配置持久会话存储,其中会话数据将以更持久的方式存储,通常在数据库中。会话商店列表can be found here。
由于您已经在使用PostgreSQL,connect-pg-simple
似乎是合乎逻辑的候选者。