Explore Library
Code Quiz

Middleware DI Resolution in Modules

Class-based middleware participates in DI, but only if its dependencies are resolvable within the module that configures it.

Codetypescript
@Injectable()
export class LoggerMiddleware implements NestMiddleware {
  constructor(private readonly configService: ConfigService) {}

  use(req: Request, res: Response, next: NextFunction) {
    if (this.configService.get('LOGGING')) {
      console.log(`[REQ] ${req.method} ${req.originalUrl}`);
    }
    next();
  }
}

@Module({
  controllers: [CatsController],
  providers: [CatsService],
})
export class CatsModule implements NestModule {
  configure(consumer: MiddlewareConsumer) {
    consumer
      .apply(LoggerMiddleware)
      .forRoutes('cats');
  }
}

This app throws a dependency resolution error at startup when CatsModule loads. What is the bug and how do you fix it?