Как проверить, что ошибка вызвана подключением клиента к Интернету?

#javascript #exception #apollo #apollo-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);
  }
}
 

Ответ №1:

Кажется, что нет хорошего способа получить это (хорошая работа, Аполлон), но это работает для меня:

 export const isNetworkError = (error: unknown) => {
  return (
    error instanceof ApolloError amp;amp;
    error.message === 'Network request failed' amp;amp;
    error.graphQLErrors.length === 0 amp;amp;
    error.clientErrors.length === 0 amp;amp;
    error.networkError amp;amp;
    Object.keys(error.networkError).length === 0
  );
};
 

Не уверен, что все эти проверки необходимы, но это именно то состояние ошибки, которое возникает, когда нет Интернета.

Актуально для "@apollo/client": "3.4.7"