express-session - NestJS:解决 NestMiddleware 中的依赖关系?

标签 express-session typeorm nestjs

我正在尝试将快速 session 与 NestJS 框架内的 typeorm 存储结合起来。因此,我编写了一个 NestMiddleware 作为快速 session 的包装器(见下文)。当我启动节点时,NestJS 记录以下内容

错误消息:

UnhandledPromiseRejectionWarning: Unhandled promise rejection (rejection id: 1): Error: Nest can't resolve dependencies of the SessionMiddleware (?). Please verify whether [0] argument is available in the current context.

Express 未启动(连接被拒绝),但创建了 Sqlite DB(应存储 session 的位置)(也是一个 session 表,但不是列)。

对我来说,解决与来自nestjs/typorm-Module的@InjectRepository的依赖关系时似乎存在一个特殊问题。有人有提示吗?

代码:

import { Middleware, NestMiddleware, ExpressMiddleware } from '@nestjs/common';
import * as expressSession from 'express-session';

import { InjectRepository } from '@nestjs/typeorm';
import { Repository } from 'typeorm';
import { TypeormStore } from 'connect-typeorm';

import { Session } from './session.entity';

@Middleware()
export class SessionMiddleware implements NestMiddleware {
  constructor(
    @InjectRepository(Session)
    private readonly sessionRepository: Repository<Session>
  ) {}

  resolve(): ExpressMiddleware {
    return expressSession({
      store: new TypeormStore({ ttl: 86400 }).connect(this.sessionRepository),
      secret: 'secret'
    });
  }
}

最佳答案

都是我的错。将中间件放在模块中,但在应用程序模块级别配置 session 中间件。在该级别上缺少以下导入语句:

TypeOrmModule.forFeature([Session])

现在将所有内容移至非应用程序模块,包括中间件配置。这样问题就解决了。

关于express-session - NestJS:解决 NestMiddleware 中的依赖关系?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49436586/

相关文章:

node.js - 当 auth header 更改时 Express 创建不同的 session

node.js - 如果 session cookie 是安全的,则 CSURF 不工作

node.js - 快速 session 不删除以前的 session

javascript - MongoDB 和 Nest.js : Define a custom name for a collection

testing - 使用 TypeORM 和 Nestjs 进行测试的过程,以及使用 mocks 开玩笑的过程?

Node.js、ws 和 express-session : how to get session object from ws. upgradeReq

jestjs - 无法模拟 createQueryBuilder 函数 typeorm Nestjs Jest

typescript - 限制和跳过 typeorm 中的相关列

npm - 无法初始化 TypeORM 项目

node.js - API Controller : Cannot PUT,无法删除(404未找到)