首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >TypeError [ERR_INVALID_ARG_TYPE],快速会话+redis错误

TypeError [ERR_INVALID_ARG_TYPE],快速会话+redis错误
EN

Stack Overflow用户
提问于 2021-12-03 19:49:16
回答 1查看 1.1K关注 0票数 4

我正在用打字稿+快车进行开发。

我希望使用Redis进行会话存储,我安装了redis,连接-redis和我下面的代码

代码语言:javascript
复制
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

代码语言:javascript
复制
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的实例。接收到数组的实例

由于此错误,以前使用内存存储实现的护照本地代码无法工作。请帮我..。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-12-04 11:18:44

在使用当前基于时间的redis4.0版本时存在一个问题,因此您需要在redis设置中设置legacyMode: true

代码语言:javascript
复制
const client = createClient({
    url: yourURL,
    legacyMode: true,
});
票数 5
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/70219951

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档