【问题标题】:Apollo client not paring UserInputErrorApollo 客户端未解析 UserInputError
【发布时间】:2020-05-03 07:09:26
【问题描述】:

我从 Apollo 服务器抛出了一个 UserInputError,playground 正确显示了带有扩展和异常的错误,但是 apollo 客户端没有显示扩展和异常。

【问题讨论】:

  • 您是如何尝试访问这些数据的?请使用您尝试解析返回的错误的代码更新您的问题。
  • 我正在使用 promise ,并尝试在 catch 块中访问它
  • 那么您是调用client.mutate 还是使用useMutation 钩子提供的mutate 函数?如果您正在使用钩子,则将哪些选项传递给钩子?您实际上是如何解析在 catch 块中返回的错误的?请编辑您的问题以显示相关代码。
  • 我明白了,我将错误字符串化并发现,我们可以使用 error.graphQlErrors[0] 访问它,奇怪的是它没有写在文档的任何地方。这确实给我带来了很多麻烦

标签: reactjs graphql apollo-client


【解决方案1】:

将错误字符串化,发现,我们可以使用 error.graphQlErrors[0] 访问它,奇怪的是它没有写在文档的任何地方。这确实给我带来了很多麻烦

【讨论】:

    【解决方案2】:

    现有的答案对我有用。只是提供更多细节以帮助未来的 Google 员工。

    在 apollo-server 后端,我们抛出了一个错误:

    throw new UserInputError("Form Arguments invalid", {
        field: "name",
    });
    

    在 apollo-client 前端,我们发现了这个错误:

    try {
        // Perform GraphQL mutation.
    } catch (error) {
        // How do we get the "field" extra info?
    }
    

    正如前面的答案所说,有一些 graphQlErrors 属性包含额外的信息。所以在这个例子中,我可以访问error.graphQlErrors[0].extensions.field 来获取“name”值。

    【讨论】:

      猜你喜欢
      • 2020-07-22
      • 2020-01-31
      • 2019-07-25
      • 2019-08-01
      • 2020-02-27
      • 2018-08-21
      • 2012-04-02
      • 2020-01-12
      • 2017-03-18
      相关资源
      最近更新 更多