我正在用打字稿+快车进行开发。
我希望使用Redis进行会话存储,我安装了redis,连接-redis和我下面的代码
import { createClient } from 'redis';
import * as RedisStore from 'connect-redis';
...
const client = createClient({
url: 'redis://default:qwer1234@localhost:6379',
});
client.connect().then(() => {
console.log('redis success');
});
...
app.use(
session({
secret: env.COOKIE_SECRET!,
resave: false,
saveUninitialized: false,
store: new redisSession({
client: client,
}),
})
);我编写了下面的代码来测试redis
app.get('/', (req, res) => {
const sess = req.session;
if (sess.key) {
res.send(sess.key);
} else {
res.send('FAIL');
}
});
app.post('/login', (req, res) => {
const sess = req.session;
const { username } = req.body;
sess.key = username
// add username and password validation logic here if you want.If user is authenticated send the response as success
res.end('success');
});
app.get('/logout', (req, res) => {
req.session.destroy((err) => {
if (err) {
return console.log(err);
}
res.send('OK');
});
});但是,当将值保存到会话时,我会得到以下错误。TypeError ERR_INVALID_ARG_TYPE:“块”参数必须是字符串类型或缓冲区或Uint8Array的实例。接收到数组的实例
由于此错误,以前使用内存存储实现的护照本地代码无法工作。请帮我..。
发布于 2021-12-04 11:18:44
在使用当前基于时间的redis4.0版本时存在一个问题,因此您需要在redis设置中设置legacyMode: true。
const client = createClient({
url: yourURL,
legacyMode: true,
});https://stackoverflow.com/questions/70219951
复制相似问题