连接Redis和Express Session

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

我正在尝试做到这一点,但我的项目正在使用 ES6 并且我遇到了问题。这是我的声明和开始方式:

import session from 'express-session';
import connectRedis from 'connect-redis';
import { createClient } from 'redis';

const app = express();

async function startServer() {
    const redisURL = 'redis://localhost:6379';
    const redisClient = createClient();
    const RedisStore = connectRedis(session);
    await redisClient.connect({ url: redisURL });
    const store = new RedisStore({ redisClient });

    app.use(session({
        store: store ,
        secret: process.env.SESSION_SECRET
        resave: false,
        saveUninitialized: false,    
        cookie: { 
            httpOnly: true, 
            path: '/', 
            sameSite: 'strict',
            expires: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000) 
        }
    }));
}

我收到错误:D:\AI Projects\Hplayer - Copy\server\server.js:33 RedisStore = (0, _connectRedis["默认"])(_expressSession["默认"]); ^

TypeError:如果没有“new”,则无法调用类构造函数 RedisStore

有什么想法吗?

连接redis和express session

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

import RedisStore from 'connect-redis';
import express from 'express';
import session from 'express-session';
import { createClient } from 'redis';
const redisURL = 'redis://localhost:6379';
const app = express();

// Initialize client.
let redisClient = createClient();
redisClient.connect({ url: redisURL }).catch(console.error);

// Initialize store.
let redisStore = new RedisStore({
  client: redisClient,
});

// Initialize sesssion storage.
app.use(
  session({
    store: redisStore,
    resave: false,
    saveUninitialized: false,
    secret: 'yoursecrethereabcxyz',
    cookie: {
      httpOnly: true,
      path: '/',
      sameSite: 'strict',
      expires: new Date(Date.now() + 30 * 24 * 60 * 60 * 1000),
    },
  })
);
const PORT = 1234;

app.listen(PORT, () => {
  console.log(`Server is running on http://localhost:${PORT}`);
});

这是解决方案。代码正在运行,但 Redis 服务器没有响应。代码现在可以运行了。

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