Я создал перехватчик, как показано ниже, и хочу использовать его по всему миру. Я добавил перехватчик в свой модуль и настроил его так, чтобы nest js обрабатывал DI за меня согласно NestJS Docs, однако, когда я делаю запрос в свою службу, я получаю сообщение об ошибке с указанием Cannot read property log of undefined
, поэтому кажется, что NestJS не заботится о DI.
Код перехватчика:
import { Injectable, NestInterceptor, ExecutionContext, CallHandler } from '@nestjs/common';
import { Observable } from 'rxjs';
import { map } from 'rxjs/operators';
import { LoggingService } from './logging.service';
@Injectable()
export class AuthInterceptor implements NestInterceptor {
constructor(private readonly loggingService: LoggingService) { }
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
return next
.handle()
.pipe(
map((response) => {
this.loggingService.log('Responded successfully');
return response;
})
);
}
}
Модуль перехватчика:
import { Module } from '@nestjs/common';
import { APP_INTERCEPTOR } from '@nestjs/core';
import { AuthInterceptor } from './auth.interceptor';
import { LoggingService } from './logging.service';
@Module({
providers: [
LoggingService,
{
provide: APP_INTERCEPTOR,
useClass: AuthInterceptor,
},
],
})
export class AuthInterceptorModule {}
Мой app.module.ts
в корне моего приложения импортирует AuthInterceptorModule. Я предполагаю, что что-то напортачил, но мне непонятно, как исправить эту проблему с DI.
@Injectable({ scope: Scope.REQUEST })
в свой класс ведения журнала, который, как я думал, будет пузырить область запроса к перехватчику, так как я его вводил, но мне пришлось добавить его к провайдеруAPP_INTERCEPTOR
, как вы предлагаете, чтобы он работал 18.12.2020