web-dev-qa-db-fra.com

Réagir en mode natif à l'aide d'un fichier pré-intégré sur le périphérique, même en mode DEV

Il y a quelques jours, en construisant et en exécutant mon application native de Xcode sur un périphérique, je me suis rendu compte que, même si je définissais mon schéma sur Debug, l'application était toujours en cours de chargement à partir d'un fichier pré-intégré. En dehors de cela, tout le reste ressemble au mode développeur. Je peux secouer l'appareil et le développeur meny pop-ups du développeur. Dans la console, je reçois une sortie et réagis de manière native enregistre également: 

Exécution de l'application "XXXXX" avec appParams: {"rootTag": 1, "initialProps": {}}.DEV=== true, niveau de développement avertissement activé, optimisation des performances désactivée

Donc, quand j'essaye de recharger depuis le développeur meny, il recharge certes, mais avec le message

Chargement à partir d'un fichier pré-groupé

J'ai essayé de supprimer l'application, de vérifier le schéma de débogage, de créer une nouvelle version, puis de compiler et d'exécuter à nouveau, sans résultat différent. 

Quelqu'un at-il une idée de ce qui pourrait avoir causé cela (j'avais déjà utilisé l'application avec Release Scheme, mais je n'ai jamais eu ce problème), et comment puis-je revenir à la normale? 

Malheureusement, je ne sais pas comment reproduire cela.

  • Xcode: 8.2.1
  • React-native: 0.40.0

Merci pour votre temps!

Résolu

Dans mon cas, c’est ce que @ while1 a signalé à propos du wifi. Mon appareil et mon ordinateur n'étaient pas connectés au même réseau wifi. J'ai cependant trouvé un réseau sur mon lieu de travail où il ne fonctionnait toujours pas, même si l'ordinateur et le périphérique étaient connectés à ce réseau (protégés d'une manière ou d'une autre peut-être?). Quoi qu'il en soit, lorsque j'ai partagé ma connexion Internet avec mon ordinateur à partir de mon iPhone, l'application a finalement chargé les données à partir de mon ordinateur. Donc, c’est bien l’iPhone qui ne pouvait pas se connecter à mon ordinateur et donc charger un fichier pré-groupé.

25
Viktor Nilsson

Dans Rea native native 0.40.0, React native tente de deviner l’emplacement du paquet par lui-même. S'il vous plaît voir si les points suivants peuvent aider:

  • Assurez-vous que votre AppDelegate.m a cette ligne: jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];

  • Vérifiez votre appareil et que votre Mac Xcode fonctionne sur le même réseau wifi. En interne pour IOS, réagissez en essayant de deviner ip par lui-même.

  • Essayez d’exécuter l’application d’abord par le biais de la ligne de commande. Par conséquent, le serveur de développement dev est en cours d’exécution, puis exécutez l’application via xcode sur votre appareil.

26
while1

alors votre problème est ici:

Changer le code dans votre AppDelegate.m:

jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"]; // comment this line

jsCodeLocation = [NSURL URLWithString:@"http://xxx.xxx.x.xx:8081/index.ios.bundle?platform=ios&dev=true"]; //uncomment this line  

À votre santé:)

11
Codesingh

Pour ceux qui sont connectés au même réseau Wi-Fi, mais à une adresse IP différente de celle de localhost (vous l'avez configuré dans RCTWebSocketExecutor.m):

Vérifiez la console de débogage Xcode, si vous trouvez l’erreur suivante:

App Transport Security has blocked a cleartext HTTP (http://) resource load since it is insecure. Temporary exceptions can be configured via your app's Info.plist file.
  1. Utilisez la réponse suivante: https://stackoverflow.com/a/32704702/3979621

  2. Et utilisez ensuite la réponse de Codesingh. En passant, je vous recommande d’utiliser la directive #ifdef DEBUG comme suit, afin que vous n’ayez pas à la modifier manuellement lorsque vous passez d’une variante à l’autre:

.

#ifdef DEBUG
  jsCodeLocation = [NSURL URLWithString:@"http://xxx.xxx.xxx.xxx:8081/index.ios.bundle?platform=ios&dev=true"];
#else
  jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index.ios" fallbackResource:nil];
#endif
3
Honza Kalfus

Comme j'ai rencontré le même problème et les points ci-dessus ne fonctionnaient pas pour moi. Je l'ai obtenu en faisant ces étapes.

  • Allez dans xcode-> votre projet-> info.plist
  • Dans "Paramètres de sécurité de transport d'application", indiquez "Autoriser les charges arbitraires", puis cliquez sur Oui.

cela devrait résoudre ce problème.

3
Krishna Mudhiraj

dans mon cas, c’était un réseau inattendu (pour Réagir natif), il a donc détecté le mauvais ip.

Vérifiez le rapport de construction si votre adresse IP est correctement détectée. 

réagit aux documents natifs

0
Benni

Pour ma part, j’ai accidentellement cliqué sur Refuser au lieu de Autoriser sur une fenêtre contextuelle macos demandant si les connexions réseau entrantes à «nœud» étaient acceptées.

Ouverture des préférences système -> Sécurité et confidentialité -> Pare-feu -> Options de pare-feu et recherche de la ligne pour le noeud défini pour le bloquer, puis corrigez-la pour autoriser le problème résolu!

0
Stian Jensen

Pour moi, cela s’est produit après la mise à jour de mon mac sur Mojave. Il s'avère que lors de la mise à jour, les paramètres du pare-feu ont été modifiés pour bloquer toutes les connexions entrantes ... Merci Stian Jensen de m'avoir mis sur la piste de la vérification de mon pare-feu!

Ce que j'ai fait:

  1. Ouvrez les Préférences Système -> Sécurité et confidentialité -> Pare-feu -> Options du pare-feu
  2. Décocher "Bloquer toutes les connexions entrantes"
  3. Assurez-vous que les connexions répertoriées proviennent de sources de confiance.
0
Myalakin