如何判断ApolloError是否是客户端网络连接导致的?

问题描述 投票:0回答:1

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);
  }
}
javascript exception apollo apollo-client internet-connection
1个回答
5
投票

似乎没有好的方法可以实现这一点(阿波罗干得好),但这正是没有互联网时出现的错误状态:

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"

相关

或者这里是应该有效的更短版本:

export const isNetworkError = (error: unknown) => {
  return (
    error instanceof ApolloError &&
    error.message === 'Network request failed'
  );
};
© www.soinside.com 2019 - 2024. All rights reserved.