Jeśli fetch połączenia nie powiedzie się w Chrome, to tylko dane o błędach, które wrócę znaczyJak radzić sobie z błędami pobierania JavaScript?
TypeError: Failed to fetch
Jak mogę wyświetlić komunikat informacyjny dla użytkownika końcowego w tym przypadku?
Konkretnie:
Czy to możliwe, aby uzyskać żadnych szczegółów na temat dlaczego nieudanym pobieraniu?
Na przykład, jeśli serwer ulegnie awarii, Chrome DevTools może zarejestrować komunikat konsoli o sieci: ERR_EMPTY_RESPONSE, ale wydaje się, że nie ma możliwości uzyskania dostępu do tego z JavaScript.
O ile mi wiadomo, odpowiedź brzmi: nie; Zakładam, że dzieje się tak ze względów bezpieczeństwa, aby nie pozwolić złośliwemu JS dowiedzieć się, które strony są i nie są dostępne, sprawdzając komunikaty o błędach.
Czy można odróżnić błędy pobierania od innych numerów TypeError
?
Jeśli nie mogę uzyskać informacji o błędach, chciałbym przynajmniej zastąpić strasznie niejasne "Nie można pobrać" z informacją "Nie można uzyskać dostępu do strony internetowej, spróbuj ponownie później", a ja chciałby to zrobić bez ryzyka wyświetlenia tego komunikatu dla innych TypeError
s.
Jedyne rozwiązanie, które znalazłem tutaj, to sprawdzenie rzeczywistego message
, aby sprawdzić, czy jest to "Failed to fetch"
. Jest to oczywiście zależne od przeglądarki; działa w Chrome, wygląda na to, że będzie działał w dowolnym języku przeglądarki Chrome, a inne przeglądarki będą wymagać własnych testów i obsługi.
'TypeError' wydaje się ... naprawdę zły rodzaj błędu. Dziwne. –
'.catch' nie działa dla ciebie? –
@JaromandaX - ".catch' działa, ale chciałbym uzyskać informacje o błędzie, jeśli to możliwe (moje pierwsze pytanie), i aby uniknąć niepoprawnego przechwytywania innych" TypeError "jako błędów pobierania, czuję, że albo muszę umieścić '.catch' _very_ close to' fetch' (więc żadne inne błędy nie mogą wystąpić, tracąc w ten sposób elastyczność w sposobie budowania moich obietnic) lub polegać na zachowaniu specyficznym dla przeglądarki, takim jak tekst "wiadomości" pobierania (moje drugie pytanie). –