【发布时间】:2021-10-24 23:01:05
【问题描述】:
我正在使用 NestJS 创建一个 API,并试图为我的快速会话设置一个会话存储,但我从这一行得到一个错误。我确实在我创建的一个新项目中使用了与 Redis 的 express-session,只是事先使用 express 来了解 Redis 和 express 会话是如何工作的,但是当我尝试将它移植到 NestJS 时它不起作用。
Main.ts
import connectRedis from 'connect-redis';
import { redis } from './redis';
async function bootstrap() {
const app = await NestFactory.create(AppModule);
const RedisStore = connectRedis(session);
这是我得到的错误
const RedisStore = connectRedis(session);
^
TypeError: connect_redis_1.default is not a function
在调用任何其他与 redis 相关的功能或 express-session 之前发生错误。如果需要,我仍然会介绍如何设置 Redis 和 Express-Session。
Redis.ts
import Redis from 'ioredis';
export const redis = new Redis(
port,
'hostName',
{ password: 'password' },
);
Main.ts 内部的会话
app.use(
session({
store: new RedisStore({ client: redis }),
cookie: {
maxAge: 60000 * 60 * 24,
},
secret: 'mysecret',
saveUninitialized: false,
resave: false,
}),
);
我确实从 NestJS 文档中读到,我可以将 Redis 设置为微服务,但是我真的只需要 Redis 用于我的 Express-Session 并且如果我能解决这个问题,我不想设置 redis 微服务。
我还使用 Mongoose 连接到我的 MongoDB,我将其用于 NestJS 内的存储库。以前在其他项目中而不是使用 Redis,我会使用 ORMSession 在 TypeORM 中设置我的商店,如果有人可以使用 Mongoose 的替代方案,那么这也可以。
const sessionRepo = getRepository(TypeORMSession);
...
store: new TypeormStore().connect(sessionRepo),
【问题讨论】:
标签: node.js express redis nestjs express-session