我有一个MERN应用程序,该应用程序使用react钩子和@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文件中,我将createHttpLink
与ApolloClient
和ApolloProvider
一起使用
有人知道为什么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一样传递一些东西或像“连接”我的组件一样? idk
答案 0 :(得分:0)
graphQLErrors
仅在服务器返回200状态代码但响应包含一个errors
数组时填充–然后,这些errors
在{中显示为graphQLErrors
挂钩(以及其他地方,例如ErrorLink)返回的{1}}个对象。
如果在执行对服务器的请求时发生错误,则该错误将被视为error
。 GraphQL服务器通常以400状态响应格式错误或无效的查询-这意味着这些错误将被视为networkError
而不是networkError
。