在打包 Node + express 服务端项目的时候发现报了一个warning,意思是connect.session()MemoryStore不是为生产环境设计的,因为它会泄漏内存,并且不会扩展到单个进程。
为了解决这个问题,我们应该添加一个存储系统来把session都存储到数据库中,这有助于应用程序的session管理。
我们用connect-mongo
来做这件事。
先安装这个包 npm install connect-mongo
接下来在app.js
中间件中配置
import config from 'config'
import session from 'express-session'
const MongoStore = require('connect-mongo').default
//配置session
app.use(
session({
secret: 'secret key',
resave: false,
saveUninitialized: true,
cookie: {
maxAge: 24 * 60 * 60 * 1000,
},
store: MongoStore.create({
mongoUrl: `mongodb://${config.get('db.user')}:${config.get('db.pwd')}@${config.get('db.host')}:${config.get('db.port')}/${config.get('db.name')}`
})
})
)
注⚠️:我引入的config是我项目根目录下的配置文件
具体可参考官方文档:express-session文档 、connect-mongo文档
搞定,又可以愉快地玩耍了
网友评论