如何检查 ApolloError 是由客户端互联网连接引起的?
How to check that ApolloError is caused by client internet connection?
ApolloError
有 networkError 属性,但它是在服务器响应 4** 或 5** 状态代码时设置的。
以及如何检查问题是由网络连接不良引起的?
try {
apolloClient.query(someQuery)
} catch (error) {
if (isInternetConnectionError(error)) { // how to check this?
Alert.alert('Please check your internet connection!')
} else {
logException(error);
}
}
似乎没有什么好的方法可以做到这一点(Apollo 干得好),但这对我有用:
export const isNetworkError = (error: unknown) => {
return (
error instanceof ApolloError &&
error.message === 'Network request failed' &&
error.graphQLErrors.length === 0 &&
error.clientErrors.length === 0 &&
error.networkError &&
Object.keys(error.networkError).length === 0
);
};
不确定所有这些检查都是必要的,但这是没有互联网时出现的确切错误状态。
实际 "@apollo/client": "3.4.7"
ApolloError
有 networkError 属性,但它是在服务器响应 4** 或 5** 状态代码时设置的。
以及如何检查问题是由网络连接不良引起的?
try {
apolloClient.query(someQuery)
} catch (error) {
if (isInternetConnectionError(error)) { // how to check this?
Alert.alert('Please check your internet connection!')
} else {
logException(error);
}
}
似乎没有什么好的方法可以做到这一点(Apollo 干得好),但这对我有用:
export const isNetworkError = (error: unknown) => {
return (
error instanceof ApolloError &&
error.message === 'Network request failed' &&
error.graphQLErrors.length === 0 &&
error.clientErrors.length === 0 &&
error.networkError &&
Object.keys(error.networkError).length === 0
);
};
不确定所有这些检查都是必要的,但这是没有互联网时出现的确切错误状态。
实际 "@apollo/client": "3.4.7"