我正在构建一个实时聊天应用程序。我正在使用 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,看看是否能解决问题,但没有解决。
connect-redis 的 npm 页面表示当您需要 RedisStore 时使用 .default 而不是 (session):
const RedisStore = require("connect-redis").default
在我使用默认值后,一切都正常旋转了