3

我是 NestJs 的新手,我创建了一个后备异常过滤器,现在我想知道如何使用它。换句话说,我如何在我的应用程序中导入它?

这是我的后备异常过滤器:

@Catch(HttpException)
export class HttpExceptionFilter implements ExceptionFilter {

    public catch(exception: HttpException, host: ArgumentsHost): any {
        
        /* Some code here */

        return response.status(statusCode).json({
            status: statusCode,
            datetime: new Date(),
            createdBy: "HttpExceptionFilter",
            errorMessage: exception.message,
        })
    }
}
4

2 回答 2

2

您需要全局绑定过滤器作为后备。您可以通过以下两种方式之一执行此操作

  1. 在任何模块中使用自定义提供程序。将此添加到模块的providers数组中
{
  provide: APP_FILTER,
  useClass: HttpExceptionFilter
}

这仍然会在 e2e 测试中生效,因为它是模块定义的一部分

  1. 通过像这样useGlobalFilters在您的bootstrap方法中使用
app.useGlobalFilters(new HttpExceptionFilter());

这不会在您的 e2e 测试中生效,因此如果您想要相同的功能,您也需要将其绑定到这些测试中。

于 2021-04-29T15:24:05.823 回答
1

只需将其添加到您的中main.ts,它应该可以正常工作:

app.useGlobalFilters(new FallbackExceptionFilter();
于 2021-04-29T15:22:50.760 回答