express-session存不了东西
时间: 2023-05-24 20:07:08 浏览: 89
如果您无法使用express-session存储任何东西,可能是由于以下原因:
1. 您没有启用cookie解析器
在使用express-session时,必须启用cookie解析器,以便将sessionId cookie发送到客户端并存储在客户端。您可以通过以下方式启用cookie解析器:
```javascript
const express = require('express');
const app = express();
const cookieParser = require('cookie-parser');
app.use(cookieParser());
app.use(session({ secret: 'yourSecret', resave: true, saveUninitialized: true}));
```
2. 您没有提供适当的存储机制
在使用express-session时,您必须提供一个存储机制,以便将session数据存储在服务器上。如果您没有提供存储机制,它将默认使用内存存储,这意味着您不能在不同的应用程序实例之间共享session数据。可以使用以下代码示例来提供存储机制:
```javascript
const express = require('express');
const app = express();
const session = require('express-session');
const MySQLStore = require('express-mysql-session')(session);
const sessionStore = new MySQLStore({
host: 'localhost',
user: 'session_user',
password: 'session_password',
database: 'session_database'
});
app.use(session({
secret: 'yourSecret',
resave: false,
saveUninitialized: true,
store: sessionStore
}));
```
这里使用了express-mysql-session库来提供MySQL存储机制。
3. 您没有正确设置req.session对象
在使用express-session时,数据应存储在req.session对象中。如果您无法存储数据,则可能是由于您没有正确设置req.session对象。以下代码示例演示了如何将数据存储在req.session对象中:
```javascript
app.get('/my-route', (req, res) => {
req.session.myData = 'Hello World!';
res.send('Data stored in session');
});
```
以上是一些常见的可能导致express-session无法存储数据的问题。您可以根据这些线索检查并确定问题所在,然后进行相应的修复。