我在任何地方都找不到有关它的信息...
考虑这个非常简单的情况...
<Mutation mutation={LOGIN_MUTATION}>
{(login, { data, loading, error }) => {
if (error) {
console.log(error)
}
我收到类似...的字符串错误消息
Error: GraphQL error: ERROR_INVALID_LOGIN_PROVIDER
at new ApolloError (bundle.umd.js:92)
at MutationData.onMutationCompleted (react-hooks.cjs.js:636)
at react-hooks.cjs.js:559
at tryCallOne (core.js:37)
at core.js:123
at JSTimers.js:289
at _callTimer (JSTimers.js:146)
at _callImmediatesPass (JSTimers.js:194)
at Object.callImmediates (JSTimers.js:458)
at MessageQueue.__callImmediates (MessageQueue.js:366)
我无法根据以这种方式格式化的错误消息采取措施。 ERROR_INVALID_LOGIN_PROVIDER可能是ERROR_INVALID_PASSWORD,例如... 我需要根据错误消息做出决定。但我只收到一个包含graphql错误的字符串,js中的模块以及许多不重要的信息。有什么方法可以接收仅格式化服务器错误的imn格式的错误消息?
答案 0 :(得分:0)
这应该可行
您示例中的错误应该是ApolloError,可能是GraphQLErrors或NetworkError
(login, { data, loading, error }) => {
if (error) {
if (error.graphQlErrors && error.graphQLErrors.length > 0) {
// There are graphQL errors and there may be multiple but its always an array.
// You should handle it properly
const { message } = error.graphQLErrors[0]
console.log(message) // e.g. ERROR_INVALID_LOGIN_PROVIDER
} else if (error.networkError) {
// There may be a network error
const { message } = error.networkError
console.log(message) // e.g. NetworkError when attempting to fetch resource.
}
}