我试图避免使用app.useGlobalFilters(new AllExceptionsFilter(...));,但我正在努力让 DI 将我的自定义 LoggerService 注入 AllExceptionsFilter 中。
我的应用程序模块导入了 LoggerModule 并定义了过滤器,如下所示:
import { APP_FILTER } from '@nestjs/core';
...
@Module({
imports: [LoggerModule],
providers: [
{
provide: APP_FILTER,
useClass: AllExceptionsFilter,
},
],
})
export default class AppModule {}
Run Code Online (Sandbox Code Playgroud)
异常过滤器(与嵌套文档中的代码几乎相同):
import { ExceptionFilter, Catch, ArgumentsHost, HttpException, HttpStatus } from '@nestjs/common';
import LoggerService from '../modules/logger/logger.service';
@Catch()
export default class AllExceptionsFilter implements ExceptionFilter {
constructor(private readonly loggerService: LoggerService) {}
catch(exception: Error, host: ArgumentsHost): void {
const ctx = host.switchToHttp();
const response = ctx.getResponse(); …Run Code Online (Sandbox Code Playgroud)