首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何修复Apollo-link中的GraphQL错误

如何修复Apollo-link中的GraphQL错误
EN

Stack Overflow用户
提问于 2020-07-05 15:13:41
回答 1查看 203关注 0票数 1

在这里,我既可以使用graphQLErrors,也可以使用networkError:

代码语言:javascript
复制
  const errorLink = onError(({ operation, graphQLErrors, networkError, forward }) => {
    if (process.env.NODE_ENV !== 'production') {
      if (networkError) {
        console.log(`[Network Error]:`, networkError.message);
      }
      if (graphQLErrors) {
        graphQLErrors.forEach((error) => {
          console.log(`[GraphQL Error]:`, error.message);
        });
      }
    }
  });

但是当试图在useQuery内部获取这些错误时,在组件级别,只返回networkError,而graphQLErrors是一个空数组:

代码语言:javascript
复制
let { loading, error, data } = useQuery(GET_ALL_PROJECTS, {
 variables: { pageNum: 1, pageSize: 10 },
 fetchPolicy: 'network-only',
 });

例如,我从后端得到一个错误403到onError函数,但是不能在useQuery内部处理这个错误!

如何解决此问题??

EN

回答 1

Stack Overflow用户

发布于 2021-09-02 15:51:42

阿波罗客户端向前传递graphQLErrorsnetworkError,这是真的。我相信这是基于一个假设,当网络错误发生时,返回数据中的GraphQL错误更具技术性,不应该显示给用户。如果你真的想访问你的服务器发送的额外错误信息,你可以在networkError.result.errors中访问它。

我在typescript中提取错误的代码:

代码语言:javascript
复制
const { networkError } = error
const networkGraphQLErrorsPresent =
  networkError &&
  "result" in networkError &&
  networkError.result.errors &&
  networkError.result.errors.length > 0
const extractedError =
  networkGraphQLErrorsPresent ?
    (networkError.result.errors[0] as GraphQLError) :
    undefined
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/62737847

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档