useQuery 错误对象 returns graphQLErrors 的空数组 属性

useQuery error object returns empty array for graphQLErrors property

我有一个 MERN 应用程序,它使用反应钩子和 @apollo/react-hooks 来执行突变和进行查询。该应用程序按预期工作,但现在我正在尝试处理我的应用程序的错误处理代码。我有这个查询

export const getStacks = gql`
query {
    stacks{
        title,
        notecards {
            question,
            answer
        },
        id
    }
}
`;

我故意将其更改为此

export const getStacks = gql`
query {
    storks{
        tile,
        notecards {
            question,
            answer
        },
        id
    }
}
`;

当我这样做并尝试从

访问stacksError

const { loading: isGetStacksLoading, error: stacksError, data: stacksData } = useQuery(getStacks);

我在 stacksError 中收到服务器错误并且没有 graphQLErrors

意思是当我控制台日志时stacksError我在控制台中看到这个

Error: Network error: Response not successful: Received status code 400

在我的 App.js 文件中,我将 createHttpLinkApolloClientApolloProvider

一起使用

有谁知道为什么 stacksError 返回服务器错误并且没有 graphQLErrors 属性 告诉我我的查询不正确?

P.S.

我已将 apollo-link-error 添加到我的 App.js 中,当它被调用时,我能够解构错误对象并记录 graphQLErrors 道具中的内容以及 networkError prop 和我在控制台看到的分别是:

[GraphQL error]: Message: Cannot query field "storks" on type "RootQueryType". Did you mean "stacks" or "stack"?, Location: [object Object], Path: undefined

[Network Error]: ServerError: Response not successful: Received status code 400

这让我更加困惑,因为它显示存在 grapQLErrors 属性 但我的组件中无法访问内容

哦!我也在为我的应用程序使用 react-router,也许我必须像使用 redux 一样传递某些东西或 "connect" 我的组件? idk

graphQLErrors 仅在服务器 returns 一个 200 状态代码但响应包含一个 errors 数组时才会被填充——那些 errors 然后被公开为 graphQLErrors 在钩子返回的 error 对象中(以及其他地方,例如 ErrorLink)。

如果在执行对服务器的请求时发生错误,错误将被视为 networkError。 GraphQL 服务器通常会以 400 状态响应格式错误或无效的查询——这意味着这些错误将被视为 networkError 而不是 graphQLErrors.