Lorsque j'exécute un projet natif de réaction, l'erreur no bundle URL present
s'affiche, mais je ne sais pas quelles erreurs je commets, j'étais très confus.
Je viens également de rencontrer ce problème (première utilisation de React Native). Le problème a disparu lorsque, alors qu'une simulation iOS (react-native run-ios
) était en cours d'exécution, j'ai à nouveau exécuté npm install
, puis react-native run-ios
. Dans la fenêtre du terminal, cela montrait qu'il était en train de se regrouper, puis le simulateur montrait l'écran de bienvenue.
Vérifiez ce lien pour les briefs après la ligne react-native init PropertyFinder
essayez d'utiliser npm start
(celui-ci fonctionne pour moi)
Fermez votre simulateur et le terminal. Ouvrez-en un nouveau et accédez à votre projet, puis mettez à niveau votre réact-native comme ceci:
react-native upgrade
Numéro dans: https://github.com/facebook/react-native/issues/5090
Comme indiqué dans le message d'erreur:
Accepter la licence Xcode/iOS nécessite des privilèges d'administrateur. Veuillez exécuter "Sudo xcodebuild -license", puis réessayez cette commande.
... j'ai lancé la commande suivante:
Sudo xcodebuild -license
Ça fonctionne maintenant.
Ce problème survient lorsque vous n'autorisez pas les connexions non sécurisées via localhost ou si vous avez peut-être tenté d'accepter des connexions non sécurisées via http.
Pour résoudre ce problème, ajoutez ceci sur info.plist
:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
</key>
Raison:
En effet, l'application ne peut pas trouver le serveur (qui sert l'interface utilisateur - avec du code javascript).
Solution:
npm run start
ou yarn start
en premierLoading dependency graph, done.
)react-native run-ios/Android
Explication:
React Native est livré avec 2 parties:
Construire des commandes:
react-native run-ios/Android
consiste à créer une partie native, puis à déployer sur des périphériques et à démarrer l'application sur des périphériques (simulateur/émulateur/périphérique réel). Cela prenait généralement 3 ~ 4 minutes pour finir.
npm run start
ou yarn start
est de construire la partie javascript et de démarrer le serveur de dev pour servir l'interface utilisateur construite à l'application. Cela prenait généralement 30 secondes pour terminer.
=> Normalement, la partie javascript est terminée puis la partie native vient plus tard. (basé sur le temps qu'ils ont utilisé).
=> ceci n’est vrai que pour la première construction (construction récente).
=> pour reconstruire:
La partie native a juste pris 10 ~ 15 secondes pour vérifier les modifications et parce qu’aucune modification pour la partie native => n’a été effectuée avant que la partie javascript soit construite et servie. (Je ne suis pas sûr que la partie javascript ait été reconstruite ou non, mais cela a pris plus de temps que la partie native)
C’est pourquoi nous avons eu ce problème, l’application a été lancée et a nécessité une fonctionnalité qui n’existait pas encore.
Prime:
react-native run-ios/Android
lancera automatiquement le serveur de développement pour vous.react-native run-ios/Android
juste après react-native init <app_name>
, tout s'est bien passé. (parce que la fonction de démarrage automatique et le temps a été pris pour la nouvelle construction comme état ci-dessus).Le temps utilisé sur cette réponse était relatif à ma machine => peut être différent sur d’autres.
J'ai eu la même erreur et j'ai pu exécuter l'application uniquement via Xcode. react-native run-ios
n'a pas fonctionné. Pour résoudre le problème, vous devez supprimer le dossier build
à YOUR_PROJECT/ios/build/
. Après cela, vous devriez pouvoir exécuter votre application via react-native run-ios
à nouveau. J'espère que cela t'aides.
Ce qui l'a résolu pour moi:
cd
dans YOUR_PROJECT/ios
rm -r build
react-native run-ios
à nouveauVous pouvez également ouvrir le Finder, accéder à YOUR_PROJECT/ios
et supprimer le dossier build
.
Puis lancez react-native run-ios again
.
Source: Andrew Bancroft
Solution -> npm start
puis ouvrez un nouveau terminal et accédez au chemin de votre projet, puis appuyez sur react-native run-ios
cela fonctionne pour moi
Assurez-vous que vos paramètres ATS sont corrects dans le fichier .plist.
Vous pouvez trouver le fichier à l’adresse /ios/{{project_nameNameBuch/Info.plist
localhost doit être défini comme cible de demande d'exception de la manière suivante:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
* (n'oubliez pas de supprimer ceci sur la version release ..)
Pour moi, le problème était qu'il ne pouvait pas créer le bundle JS. Il n'indique pas l'erreur lors de la construction à partir de Xcode, vous ne pouvez donc pas le savoir. Pour rechercher l'erreur, exécutez la commande suivante.
react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle
Pour moi, l'erreur était due à un composant manquant de PureRenderMixin. La solution peut être trouvée ici: https://github.com/facebook/react-native/issues/13078 . En gros, vous devez installer manuellement [email protected]. Cela peut être fait en exécutant cette commande.
npm i --save [email protected]
Ce problème se pose maintenant pour tout le monde car de nouvelles versions de react alphas sont publiées (en particulier alpha.5) et elles sont en train de modifier les versions natives de Rea.
Essayez d'exécuter ce code ---
Sudo xcodebuild -license
Cela peut résoudre le problème. Cela fonctionne pour moi.
C'est un problème avec react-native v0.42.1. Essayez de fermer toutes les instances de terminaux et XCode et exécutez:
launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios
J'ai trouvé que le moyen le plus simple et le plus rapide de contourner ce problème est de quitter l'application dans le simulateur (2 x Cmd + Shift + H
) et de le relancer.
Dans la plupart des cas, ce problème se produit lorsque la recherche DNS/IP ne parvient pas à trouver localhost.
Solution :
Essayez d’ajouter l’ip localhost à votre fichier hôte, etc.
vous pouvez ajouter les lignes ci-dessous à votre fichier hôte etc (/ etc/hosts)
127.0.0.1 localhost
255.255.255.255 broadcasthost
:: 1 l. ocalhost
Pour confirmer que c'est bien le problème Vous pouvez cliquer sur l'URL de l'offre groupée pour le safari (si vous l'essayez en chrome, cela résoudra mais safari ne pourra pas le résoudre). http: // localhost: 8081/index.ios.bundle? platform = ios & dev = true & minify = false
fermez d'abord le simulateur, puis exécutez-les sur le terminal
npm install
react-native run-ios
Dans mon cas, le problème a été résolu en redémarrant le serveur adb
: adb kill-server && adb start-server
vérifiez votre clé 'localhost' à l'adresse NSExceptionDomains dans info.plist
s'il n'existe pas, cela provoque une erreur.
vérifiez votre proxy réseau, mieux vaut le fermer.
ou vous devriez trouver un autre moyen de maintenir le serveur de conditionnement
J'ai eu ce problème aussi pour moi ... le problème était que le compresseur ne fonctionnait pas, il semblait que mon shell par défaut était zsh. réag-native tire pour ouvrir une nouvelle fenêtre de terminal et exécuter .../node_modules/react-native/packager/launchPackager.command
mais cela ne s’exécute pas. L'exécuter manuellement (et le maintenir) l'a corrigé pour moi.
Cela m'est aussi arrivé après avoir redémarré mon mac. Une fenêtre de terminal launchPackager s'ouvre lorsque vous exécutez votre application sur le simulateur. J'ai fermé cette fenêtre et mis fin au processus (j'ai également fermé le simulateur), puis exécuté à nouveau réact-native run-ios et tout fonctionne correctement.
J'ai eu le même problème. Mais mon problème était que mon Mac et mon iPhone n'étaient pas dans le même réseau wifi.
Veillez donc à ce qu'ils soient tous dans le même réseau et reconstruisez-les à nouveau. Si ce n'est pas le cas, essayez les solutions mentionnées par d'autres membres ici.
Il suffit de lancer dans le terminal react-native start
:
cd your react native app directory/ react-native start
Il va démarrer le conditionneur, maintenant ne fermez pas cette fenêtre de terminal, dans une autre fenêtre de terminal, exécutez votre projet. C’est le seul désir que j’ai trouvé pour le faire fonctionner correctement.
En supposant que vous utilisez nvm
et plusieurs versions de noeud installées, voici la solution:
npm install -g react-native-cli
dans node v6.9.5
. node v6.9.5
par défaut en exécutant nvm alias default 6.9.5
react-native run-ios
Le problème est que vous avez plusieurs versions de noeud installées via nvm
et pour installer react-native-cli
vous avez déjà basculé ou installé la dernière version de noeud, qui n'est pas encore marquée comme noeud par défaut à pointer dans nvm
. Lorsque vous exécutez react-native run-ios
, cela ouvre une autre nouvelle fenêtre de terminal dans laquelle la variable par défaut nvm
n'est pas dirigée vers la version du noeud sur laquelle vous avez installé react-native-cli
. Il suffit de suivre la configuration ci-dessus, j'espère que cela devrait aider.
Assurez-vous que launchPackage.command
est en cours d’exécution dans un terminal et essayez à nouveau de l’exécuter. Il va construire le paquet. C'est un peu comme webpack-dev-server.
Exécutez la commande ci-dessous:
killall -9 node
rm -rf ios/build
react-native run-ios
il ouvrira launchpackager.command et l'application s'installera sur le simulateur ios
une autre chose qui fonctionne pour moi est d'ouvrir le projet dans xcode, puis de le nettoyer et de le construire. généralement, il réexécute le serveur de conditionnement et résout le problème.
J'étais connecté au réseau par câble et wifi sur mon macbook, le wifi est désactivé et il suffit de cliquer sur Run et ça a fonctionné!
Nous avons contourné ce problème en supprimant l'option SKIP_BUNDLING dans le script de construction que la documentation RN proposait d'ajouter pour accélérer la génération de débogage. La vraie solution (pour notre cause) est incluse dans la RN 0.57:
Celui-ci fonctionne pour moi. J'ai supprimé ces lignes de mon fichier plist sous iOS à des fins de production. Par conséquent, le simulateur n'a pas pu récupérer le fichier bundle. https://medium.com/@joshuakuhar/no-bundle-url-present-69333bb5da42
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
Je travaille avec RN 0.49.5
. J'ai essayé beaucoup de méthodes, mais personne ne fonctionne. Enfin, j’ai réussi à résoudre ce problème . C’est simple et facile.
L'idée principale est de changer la localhost
en 127.0.0.1
, mais ce n'est pas là que l'IA vous dit. C'est dans RCTBundleURLProvider.m # - (BOOL) isPackagerRunning: (NSString *) Host .
Changements de code: oc
- NSString *Host = ipGuess ?: @"localhost";
+ NSString *Host = ipGuess ?: @"127.0.0.1";
.__ C'est correct pour le simulateur. S'il s'agit d'un appareil, il suffit de modifier l'adresse IP de celle de votre ordinateur.
127.0.0.1 localhost
n'est pas supprimer npm install
& react-native upgrade
pour réinitialiser votre projetPour mon cas d'utilisation, j'ai dû supprimer le répertoire node_modules et exécuter npm install.
$ rm -rf node_modules (make sure you're in the ios project directory)
$ npm install
Si vous obtenez l'erreur "dyld: la bibliothèque n'est pas chargée: /usr/local/opt/icu4c/lib/libicui18n.58.dylib", procédez comme suit:
$ brew uninstall --force node --ignore-dependencies node
$ brew uninstall icu4c --ignore-dependencies icu4c
$ brew install icu4c
$ brew unlink icu4c && brew link icu4c --force
$ brew install node
$ npm install
export FORCE_BUNDLING=true
a travaillé pour moi. Il y avait un avertissement dans la console qu'il n'était pas groupé.
Ok, ça peut paraître bizarre, mais aucune de ces réponses n’a fonctionné pour moi. Je suis maintenant à 0,60 réactif natif et le problème se posait sur iOS et Android. la seule solution qui fonctionnait pour moi exécutait react-native run-ios
ou react-native run-Android
puis, lorsque l'erreur apparaissait, exécutez npm install
(laissez le bundler et le simulateur ouverts), puis exécutez react-native run-ios
ou react-native run-Android
J'ai essayé toutes les solutions ci-dessous, mais rien ne fonctionne:
Sudo xcodebuild -license
ourm -r build
et exécutez react-native run-ios
ounpm start
et exécuter react-native run-ios
NSAppTransportSecurity
à `J'ai résolu par faire ceci:
Sudo vi /private/etc/hosts
(si vous utilisez VSCode, utilisez ce Sudo code /private/etc/hosts
)127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
react-native run-ios
à nouveau.En effet, vous avez probablement fermé la fenêtre Metro Bundler ou celle-ci est peut-être bloquée. ouvrez simplement un autre terminal/cmd dans le répertoire du projet et exécutez npm start
. En exécutant npm start
React, _ Native lancera à nouveau la fenêtre MetroBundler. Une fois que l’emballeur a terminé le processus BUNDLE
, il suffit de recharger l’application et vous serez prêt à partir.
C'est parce que votre client ne peut pas atteindre votre serveur de conditionnement.
Si vous êtes un codeur chinois tel que je suis, je pense que vous pourriez utiliser un VPN pour passer par le GFW. Lorsque votre outil VPN est en «mode global», toutes vos demandes voyagent à travers le monde et ne peuvent pas obtenir localhost.
Essayez le "Mode proxy automatique".
Si vous ne venez pas de Chine ou si votre paramètre VPN est déjà "Mode proxy automatique", je vous suggère de fermer votre serveur de conditionnement et de réessayer.
J'ai fait face au même problème et je l'ai résolu en apportant des modifications dans le fichier AppDelegate.m. j'ai changé
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
à
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
Et ça a marché pour moi :)
Ce problème peut survenir lorsque plusieurs versions du noeud sont gérées par nvm et que la version par défaut n’est pas destinée à être exécutée par react-native. (assurez-vous qu'il s'agit du nœud 8.3 ou plus récent)
réactif natif run-ios
ouvre un nouveau terminal et exécute la version du noeud trouvée dans le $ PATH.
S'il trouve une ancienne version de noeud non prise en charge par react native, il peut générer cette erreur.
Assurez-vous que la variable $ PATH pointe déjà vers la version souhaitée du nœud (assurez-vous qu'il s'agit du nœud 8.3 ou plus récent) lorsqu'un nouveau terminal est ouvert.
Cela a résolu le problème pour moi. Bonne chance.
Cela se produit également si vous avez installé Visual Studio Code React Native Tools mais que vous continuez à utiliser react native dans le terminal: cela fonctionnera la première fois mais ensuite, il s'arrêtera l'écran rouge pas de paquet.
le lancement de react native from vscode fonctionne parfaitement à la place ...
Ce problème m'est arrivé car le bundler Metro a démarré et a reçu le focus alors que je tapais sur mon clavier dans une autre fenêtre. Ma saisie accidentelle dans la fenêtre du terminal récemment ouverte a provoqué le blocage de l’unité de traitement Metro. Réexécuter react-native run-ios
et attendre patiemment l'a corrigé.
Ouvrez un cd de fenêtre de terminal dans YOUR_PROJECT/ios. Supprimez le dossier de construction avec rm -r build
Après cela, ouvrez votre projet dans Xcode et exécutez-le une fois. il sera lancé au démarrage du serveur et créera le fichier main.jsbundle.
Maintenant, si vous exécutez à nouveau run-ios réact-native à partir du terminal, cela fonctionnera comme prévu.
J'espère que ça va aider!.
Désactiver le proxy global (ombres)
Voici comment je l'ai fait:
essayez d'ajouter ceci:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
assurez-vous que vous avez .jsbundle dans votre projet
Ajouter
react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios
dans votre code natif de réaction, essayez de rouvrir le projet