我正在尝试做到这一点,但我的项目正在使用 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
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 服务器没有响应。代码现在可以运行了。