require(“connect-redis”)(会话); require(...) 不是一个函数

问题描述 投票:0回答:1

我正在构建一个实时聊天应用程序。我正在使用 Express-Session 添加 Cookie,这样用户就不必每次刷新页面时都登录。

const session = require("express-session");
const Redis = require("ioredis");
const RedisStore = require("connect-redis")(session);

这是我的进口。我还有更多,但我认为这些与问题有关,所以我只分享这些。我的项目中有所有这些下载器,以防有人说要仔细检查我是否正确安装了它们,这就是我添加这个的原因。这就是我实现代码的方式...

const redisClient = new Redis();
app.use(session({
    secret:process.env.COOKIE_SECRET,
    credentials:true,
    name:"$id",
    store: new RedisStore({client:redisClient}), //This is the user's session information
    resave:false,
    saveUninitialized:false,
    cookie: {
        secure:process.env.ENVIRONMENT === "production" ? "true" : "auto",
        httpOnly:true,
        expires: 1000 * 60 * 60 * 24 * 7,
        sameSite:process.env.ENVIRONMENT === "production" ? "none" : "lax",
    }
}))

但是我保留了这条错误消息,指出 require(...) 不是一个函数。我试图解决它,但我无法解决。

我尝试安装 redis 而不是 ioredis,看看是否能解决问题,但没有解决。

node.js backend express-session ioredis connect-redis
1个回答
0
投票

connect-redis 的 npm 页面表示当您需要 RedisStore 时使用 .default 而不是 (session):

const RedisStore = require("connect-redis").default

在我使用默认值后,一切都正常旋转了

© www.soinside.com 2019 - 2024. All rights reserved.