我正在开发一个 NestJS 应用程序,并尝试将我的记录器服务注入到 ExceptionFilter 中。这是我的代码:
@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {
constructor(private readonly loggerService: LoggerService) {}
catch(exception: HttpException, host: ArgumentsHost) {
...
this.loggerService.log(exception.message, 'error');
...
}
}
我已经在我的 AppModule 中注册了 HttpExceptionFilter 和 LoggerService,如下所示:
@Module({
providers: [
LoggerService,
{
provide: APP_FILTER,
useClass: HttpExceptionFilter,
},
],
})
export class AppModule {}
但是,当执行 HttpExceptionFilter 的 catch 方法时,出现以下错误:
类型错误:无法读取未定义的属性(读取“日志”)
在你的主文件中添加
const loggerService = await app.resolve(LoggerService);
app.useGlobalFilters(
new HttpExceptionFilter(loggerService),
);