我正在尝试这样做,但我的项目使用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[“default”])(_expressSession[“default”]); ^
TypeError:类构造函数RedisStore不能在没有'new'的情况下调用
有什么想法吗?
连接Redis和Express会话
2条答案
按热度按时间jaql4c8m1#
字符串
我使用了云Redis DB。连接成功。我使用了云,因为我没有本地Redis安装。你必须像这样创建客户端。
型
这里是解决方案.你不需要调用connectRedis与会话作为一个参数.它将像这样工作.如果这不工作,那么可能有一个问题与url或redis权限
gcuhipw92#
Node Redis在对
createClient
的调用中接收到它的配置,而不是对.connect
的调用。你需要像这样连接:字符串
这可能不是你的问题的核心,但它是不正确的东西。你可能会逃脱它,因为如果你没有传递任何东西给XNUMX客户端,它会假设主机为
localhost
,端口为6379
。