Comment puis-je voir les requêtes réseau (pour le débogage) dans React Native?

j'aimerais voir mes requêtes réseau dans React Native pour m'aider à déboguer-idéalement dans l'onglet' Network ' des devtools de Chrome.

Il y a quelques fermé questions à ce sujet sur GitHub (https://github.com/facebook/react-native/issues/4122 et https://github.com/facebook/react-native/issues/934) mais je ne suis pas tout à fait comprendre. Il semble que j'ai besoin de défaire certains des polyfills de React Native et ensuite exécuter certaines commandes avec des options de débogage supplémentaires., et peut-être modifier certains paramètres de sécurité Chrome? Et apparemment, il y a des problèmes de sécurité en jeu qui pourraient en faire une idée terrible, mais personne impliqué dans le fil n'a explicitement déclaré ce qu'ils sont.

Quelqu'un pourrait-il fournir un guide étape par étape pour faire fonctionner L'onglet Réseau avec React Native, ainsi qu'une explication des problèmes de sécurité que cela implique?

45
demandé sur Mark Amery 2015-11-30 14:22:23

9 réponses

c'est Ce que j'ai utilisé dans le point d'entrée de mon application

const _XHR = GLOBAL.originalXMLHttpRequest ?  
    GLOBAL.originalXMLHttpRequest :           
    GLOBAL.XMLHttpRequest                     

XMLHttpRequest = _XHR

EDIT: frevib lié à une syntaxe plus concise ci-dessous. Merci frevib!

GLOBAL.XMLHttpRequest = GLOBAL.originalXMLHttpRequest || GLOBAL.XMLHttpRequest;

Explication:

GLOBAL.originalXMLHttpRequest renvoie la copie de XHR des outils de développement Chrome. Il est fourni par RN comme une trappe d'évacuation. La solution de Shvetusya ne fonctionnera que si les outils dev sont ouverts et fournissent ainsi XMLHttpRequest.

EDIT: vous devrez autoriser les requêtes cross origin en mode debugger. Avec chrome, vous pouvez utiliser ce plugin pratique.

EDIT: pour tout savoir sur la RN github question qui m'a conduit à cette solution

65
répondu tryangul 2017-08-09 20:53:41

j'utilise la suite de mon application ( Ajouter ceci dans votre application principale.js point d'entrée de fichier ) :

// To see all the requests in the chrome Dev tools in the network tab.
XMLHttpRequest = GLOBAL.originalXMLHttpRequest ?
    GLOBAL.originalXMLHttpRequest :
    GLOBAL.XMLHttpRequest;

  // fetch logger
global._fetch = fetch;
global.fetch = function (uri, options, ...args) {
  return global._fetch(uri, options, ...args).then((response) => {
    console.log('Fetch', { request: { uri, options, ...args }, response });
    return response;
  });
};

La meilleure chose est qu'il montre aussi l'extraction des journaux dans la console qui sont bien formatés.

Capture d'écran:

enter image description here

sous l'onglet Réseau:

enter image description here

20
répondu Sankalp Singha 2017-03-22 12:48:23

je sais que c'est une vieille question, mais il y a une façon beaucoup plus sûre de le faire maintenant qui ne nécessite pas de désactiver les CORS ou de modifier le code source natif React. Vous pouvez utiliser une bibliothèque tierce appelée Reactotron qui non seulement suit les appels API (en utilisant le plugin réseau), mais peut également suivre votre magasin Redux, et Sagas avec des configuration:

https://github.com/infinitered/reactotron https://github.com/infinitered/reactotron/blob/master/docs/plugin-networking.md

9
répondu T Stone 2017-06-06 16:05:32

j'ai pu déboguer mes requêtes dans Chrome en supprimant polyfill que React Native fournit après importation de React Native.

var React = require('react-native');
delete GLOBAL.XMLHttpRequest;

cela a fonctionné pour moi pour les mêmes demandes d'origine. Pas sûr si vous avez besoin de désactiver CORS dans Chrome pour le faire fonctionner pour cross origin.

5
répondu lanan 2015-12-16 15:09:31

j'utilise Reactron pour le suivi de la demande du réseau.

enter image description here

5
répondu Aung Myat Hein 2018-05-27 00:32:54

je suggère D'utiliser Charles pour inspecter vos requêtes réseau. Il est vraiment bon et fournir plus de visibilité et vous permet de faire des choses avancées.

http://charlesproxy.com

1
répondu Ran Yefet 2015-12-30 09:43:49

Dans le passé, j'ai utilisé GLOBAL.XMLHttpRequest hack pour suivre mes requêtes API mais parfois il est très lent et ne fonctionne pas pour les requêtes assets. J'ai décidé d'utiliser Postman’s proxy fonction pour inspecter la communication HTTP sortant du téléphone. Pour plus de détails regarder les documents officiels, mais fondamentalement, il existe trois étapes faciles:

  • configurer le proxy dans Postier
  • Vérifiez l'adresse IP de votre ordinateur($ ifconfig)
  • configurer le mandataire HTTP sur votre appareil mobile dans les paramètres du wifi
1
répondu mradziwon 2017-09-14 16:01:33

s'il vous Plaît soyez prudent avec ce code.

XMLHttpRequest = GLOBAL.originalXMLHttpRequest ?
   GLOBAL.originalXMLHttpRequest : GLOBAL.XMLHttpRequest;

Ça aide et c'est génial, mais il détruit le téléchargement. Je passe 2 jours à essayer de comprendre pourquoi les fichiers téléchargés envoient [object Object] au lieu du vrai fichier. La raison est un code ci-dessus.

Utilisez - le pour les appels réguliers mais pas pour les appels multipart/form-data

1
répondu Dawid Dereszewski 2017-12-13 15:22:25

ajouter le débogueur dans le js où vous pouvez voir le req ou la réponse

-11
répondu Pramod Mg 2015-12-01 23:41:50