类型错误:无法读取未定义的属性(读取“createClient”)

Joh*_*ohn 6 javascript redis typescript express-session

所以我想做的是创建一个会话并将其存储在redis中。我按照这个 github 存储库https://github.com/tj/connect-redis中的 API 进行操作。

但我在“client”一词中收到此错误:预期类型来自属性“client”,该属性在“RedisStoreOptions”类型上在此处声明。

这是我使用的代码:

import redis from 'redis';
import session from 'express-session';
import connectRedis from 'connect-redis';

const app = express();

    const RedisStore = connectRedis(session);
    const redisClient = redis.createClient({ legacyMode: true });
    redisClient.connect().catch(console.error);
    app.use(
        session({
          store: new RedisStore({ client: redisClient }),
          saveUninitialized: false,
          secret: "keyboard cat",
          resave: false,
        })
    )
Run Code Online (Sandbox Code Playgroud)

错误发生在这里:

store: new RedisStore({ client: redisClient })
Run Code Online (Sandbox Code Playgroud)

更具体地说,是“客户端”这个词。

小智 37

代替

import redis from 'redis';
Run Code Online (Sandbox Code Playgroud)

使用

import * as redis from 'redis';
Run Code Online (Sandbox Code Playgroud)


小智 2

我猜你使用的是 TypeScript,我遇到了这个问题,你安装了吗:

@types/redis
@types/connect-redis
@types/express-session
Run Code Online (Sandbox Code Playgroud)

我这样做了,但客户端一直出错,所以我卸载了所有 3 个 @types,并注意到 redis 不需要您声明模块,所以我只安装了express-session 和 connect-redis 的类型

npm 我 @types/connect-redis @types/express-session --save-dev


纱线添加 @types/connect-redis @types/express-session -D