【问题标题】:NestJS missing URL errors not caught by global filterNestJS缺少全局过滤器未捕获的URL错误
【发布时间】:2022-02-23 20:53:17
【问题描述】:

根据文档中的示例,我有一个用于捕获所有异常的全局过滤器

export class GlobalExceptionFilter implements ExceptionFilter {

  catch(exception: unknown, host: ArgumentsHost): void {
    console.log(exception)
  }
}

使用全局拦截器变量

{
   provide: APP_FILTER,
   useClass: GlobalExceptionFilter,
   scope: Scope.REQUEST
},

应用程序中的所有其他异常都会被捕获。但是未知的 API 端点未被捕获,因此 Nest 使用其默认响应结构进行响应

{
    "statusCode": 404,
    "message": "Cannot GET /unknownUrl",
    "error": "Not Found"
}

这与我的 API 合同不同,所以我也想捕获这些错误(最好在这个过滤器中,但任何地方都可以),以便我可以在自己的结构中返回响应

【问题讨论】:

    标签: typescript exception nestjs interceptor


    【解决方案1】:

    我自己尝试了这个,NestJs 捕捉到了这个异常。我为你创建了这个 sn-p https://codesandbox.io/s/modest-firefly-7szknx。不知何故,codeandbox 被窃听,不会以正确的方式启动应用程序。您必须打开第二个终端并运行 yarn start:dev。然后,您可以在第二个浏览器选项卡 (Browser (:3001)) 中观看应用程序。

    【讨论】:

    • 你的回答有点不清楚。请将您的代码粘贴到答案中,不要发布指向代码框的链接
    猜你喜欢
    • 1970-01-01
    • 2016-11-03
    • 1970-01-01
    • 2019-06-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-07
    • 1970-01-01
    • 2019-02-14
    相关资源
    最近更新 更多