Nest JS - Невозможно ввести сервис для middlewere

Я создал auth middlewere для проверки каждого запроса, посредник использует сервер (только если данные не были найдены в req.connection). Я пытаюсь внедрить службу в свой посредник и продолжаю получать ту же ошибку: "Nest не может разрешить зависимости AuthenticationMiddleware (?). Проверьте, доступен ли аргумент [0] в текущем контексте".

AuthenticationModule:

@Module({
   imports: [ServerModule],
   controllers: [AuthenticationMiddleware],
})
export class AuthenticationModule {
}

AuthenticationMiddleware:

@Middleware()
export class AuthenticationMiddleware implements NestMiddleware {

constructor(private service : UserService) {}

resolve(): (req, res, next) => void {
 return (req, res, next) => {
   if (req.connection.user)
    next();

  this.service.getUsersPermissions()     
  }
}

ServerModule:

@Module({
 components: [ServerService],
 controllers: [ServerController],
 exports: [ServerService]
})    
 export class ServerModule {}

ApplicationModule:

@Module({
  imports: [
    CompanyModule,
    ServerModule,
    AuthenticationModule
  ]
})

export class ApplicationModule implements NestModule{
  configure(consumer: MiddlewaresConsumer): void {
  consumer.apply(AuthenticationMiddleware).forRoutes(
      { path: '/**', method: RequestMethod.ALL }
   );
 }
}

1 ответ

Решение

Ваше приложение не может решить AuthMiddleware зависимости, вероятно, потому что вы вводите UserService в это, кроме ServerModule что вы импортируете в свой AuthenticationModuleпросто экспортирует ServerService, Итак, что должно быть сделано:

@Middleware()
export class AuthenticationMiddleware implements NestMiddleware {

  constructor(private service : ServerService) {}

  resolve(): (req, res, next) => void {
    return (req, res, next) => {
      if (req.connection.user)
        next();

    this.service.getUsersPermissions()     
  }
}

Вы можете узнать больше о контейнере зависимостей NestJS здесь.

Другие вопросы по тегам