Chciałbym przeglądać moje żądania sieciowe w React Native, aby pomóc mi w debugowaniu - najlepiej w zakładce „Sieć” w Devtools Chrome.
Jest kilka zamkniętych problemów na ten temat w GitHub ( https://github.com/facebook/react-native/issues/4122 i https://github.com/facebook/react-native/issues/934 ), ale nie robię tego całkowicie je rozumiem. Wygląda na to, że muszę cofnąć niektóre polyfills React Native, a następnie uruchomić kilka poleceń z dodatkowymi flagami debugowania i może zmodyfikować niektóre ustawienia zabezpieczeń Chrome? I najwyraźniej wiąże się to z pewnymi kwestiami bezpieczeństwa, które mogą sprawić, że będzie to okropny pomysł, ale nikt zaangażowany w ten wątek wyraźnie nie określił, czym one są.
Czy ktoś mógłby podać przewodnik krok po kroku, jak uruchomić kartę Sieć w React Native, a także wyjaśnić związane z tym kwestie bezpieczeństwa?
źródło
Enable Network Inspect
aby zadziałało. Domyślnie tak nie jest.To jest to, czego używałem w punkcie wejścia mojej aplikacji
EDYCJA: frevib połączony z bardziej zwięzłą składnią poniżej. Dzięki frevib!
Wyjaśnienie:
GLOBAL.originalXMLHttpRequest
odnosi się do kopii XHR w Chrome Dev Tools. Jest dostarczany przez RN jako właz ratunkowy. Rozwiązanie Shvetusya będzie działać tylko wtedy, gdy narzędzia programistyczne są otwarte, a tym samym zapewniająXMLHttpRequest
.EDYCJA: Musisz zezwolić na żądania między źródłami w trybie debugera. W Chrome możesz użyć tej przydatnej wtyczki .
EDYCJA: Przeczytaj o problemie z RN na githubie, który doprowadził mnie do tego rozwiązania
źródło
Uncaught Error: unsupported BodyInit type at Response.Body._initBody (fetch.js:231) at new Response (fetch.js:390) at XMLHttpRequest.xhr.onload (fetch.js:437)
W mojej aplikacji używam następujących elementów (dodaj to w głównym pliku punktu wejścia app.js):
Najlepsze jest to, że pokazuje również dzienniki pobierania w konsoli, które są dobrze sformatowane.
Zrzut ekranu:
Na karcie sieci:
źródło
Używam Reactotron do śledzenia żądań sieciowych.
źródło
Wiem, że to stare pytanie, ale teraz jest o wiele bezpieczniejszy sposób, aby to zrobić, który nie wymaga wyłączania CORS lub zmiany kodu źródłowego React Native. Możesz użyć biblioteki innej firmy o nazwie Reactotron, która nie tylko śledzi wywołania API (za pomocą wtyczki sieciowej), ale także może śledzić Twój sklep Redux i Sagas z dodatkową konfiguracją:
https://github.com/infinitered/reactotron https://github.com/infinitered/reactotron/blob/master/docs/plugin-networking.md
źródło
Udało mi się debugować moje żądania w Chrome, usuwając polyfill, który zapewnia React Native po zaimportowaniu React Native.
To zadziałało dla mnie dla tych samych żądań pochodzenia. Nie jestem pewien, czy musisz wyłączyć CORS w Chrome, aby działał dla różnych źródeł.
źródło
W przeszłości używałem
GLOBAL.XMLHttpRequest
hacka do śledzenia moich żądań API, ale czasami jest to bardzo powolne i nie działa w przypadku żądań zasobów. Postanowiłem użyćPostman’s proxy
funkcji do sprawdzenia komunikacji HTTP wychodzącej z telefonu. Aby uzyskać szczegółowe informacje, zapoznaj się z oficjalną dokumentacją , ale zasadniczo są trzy proste kroki:$ ifconfig
)źródło
Uważaj na ten kod.
Pomaga i jest świetny, ale niszczy przesyłanie. Spędziłem 2 dni próbując dowiedzieć się, dlaczego przesłane pliki wysyłają [obiekt obiektu] zamiast prawdziwego pliku. Powodem jest powyższy kod.
Używaj go nie do zwykłych połączeń, ale do połączeń typu multipart / form-data
źródło
Proponuję użyć Charlesa do sprawdzenia żądań sieciowych. Jest naprawdę dobry i zapewnia lepszą widoczność i pozwala robić zaawansowane rzeczy.
http://charlesproxy.com
źródło
http://localhost:8081/index.android.bundle?platform=android&dev=true
... jak sprawić, by przechwytywał WSZYSTKIE żądania? (Uderzam w zewnętrzny interfejs API)Jeśli chcesz debugować żądania sieciowe w wydanej wersji swojej aplikacji, możesz użyć biblioteki React-native-network-logger . Umożliwia monitorowanie i przeglądanie żądań sieciowych w aplikacji z niestandardowego ekranu debugowania.
Następnie możesz umieścić to za flagą kompilacji lub flagą sieci, aby wyłączyć ją dla użytkowników w aplikacji produkcyjnej.
Po prostu zainstaluj go za pomocą,
yarn add react-native-network-logger
a następnie dodaj to w punkcie wejścia swojej aplikacji:A to na ekranie debugowania:
Zastrzeżenie: jestem autorem pakietu.
źródło
Jeśli masz telefon z Androidem lub emulator,
npx react-native start
Następnie otwórz Android Studio .
Otwórz
android
folder swojego projektu jako projekt Android Studio.Kliknij tę niebieską ikonę, która jest Android Profiler
Po uruchomieniu programu Android Profiler możesz dodać swoją aplikację za pomocą szarej ikony plusa obok
SESSIONS
etykietyTeraz możesz sprawdzić sieć za pomocą tego narzędzia. Możesz zobaczyć trójkąty, które pokazują Twoją aktywność w sieci.
Sprawdź to, aby uzyskać więcej informacji na temat sprawdzania ruchu sieciowego .
źródło
Dodaj Debugger w js, gdzie możesz zobaczyć żądanie lub odpowiedź
źródło