Wenn ich ein reaktives Projekt laufe, erhalte ich einen Fehler no bundle URL present
, aber ich weiß nicht, welche Fehler ich mache, ich war sehr verwirrt.
Beheben Sie den Fehler No bundle URL present
Mit:
rm -rf ios/build/; kill $(lsof -t -i:8081); react-native run-ios
echo "alias rni=\"kill \$(lsof -t -i:8081); rm -rf ios/build/; react-native run-ios\"" >> ~/.bashrc; source ~/.bashrc
Jetzt können Sie React Native iOS-Builds mit einer einfachen Aliasverknüpfung ausführen (ohne sich um einige der häufig auftretenden roten Fehlerbildschirme kümmern zu müssen):
rni
Ich bin auch auf dieses Problem gestoßen (zum ersten Mal mit React Native gestartet). Das Problem verschwand, als ich - während eine iOS-Simulation (react-native run-ios
) lief - npm install
und dann erneut react-native run-ios
ausführte. Im Terminalfenster wurde angezeigt, dass es sich um eine Bündelung handelte. Anschließend zeigte der Simulator den Begrüßungsbildschirm.
Überprüfen Sie diesen Link für kurze Angaben nach react-native init PropertyFinder
Zeile versuchen Sie, npm start
zu verwenden (dieser für mich funktioniert)
Schließen Sie Ihren Simulator und das Terminal. Öffne ein neues und gehe zu deinem Projekt, dann aktualisiere dein Reaktives wie folgt:
react-native upgrade
Ausgabe in: https://github.com/facebook/react-native/issues/5090
Wie in der Fehlermeldung angegeben:
Um der Xcode/iOS-Lizenz zuzustimmen, benötigen Sie Administratorrechte. Führen Sie "Sudo xcodebuild -license" aus und wiederholen Sie diesen Befehl.
... Ich habe den folgenden Befehl ausgeführt:
Sudo xcodebuild -license
Es funktioniert jetzt.
Dieses Problem tritt auf, wenn Sie unsichere Verbindungen über Localhost nicht zulassen oder Sie möglicherweise versucht haben, unsichere Verbindungen über http zu akzeptieren.
Um dies zu beheben, fügen Sie dies in info.plist
hinzu:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
</key>
Grund:
Dies liegt daran, dass die App den Server nicht ermitteln kann (der die Benutzeroberfläche bereitstellt - durch Javascript-Code).
Lösung:
npm run start
oder yarn start
ausLoading dependency graph, done.
).react-native run-ios/Android
ausführenErläuterung:
React Native wird mit 2 Teilen geliefert:
Befehle erstellen:
react-native run-ios/Android
dient zum Erstellen eines nativen Teils, der anschließend auf Geräten bereitgestellt und auf Geräten (Simulator/Emulator/reales Gerät) gestartet wird. Dies dauerte normalerweise 3 bis 4 Minuten.
npm run start
oder yarn start
dient zum Erstellen des Javascript-Teils und zum Starten des Dev-Servers, um die erstellte Benutzeroberfläche für die App bereitzustellen. Dies dauerte normalerweise 30 Sekunden.
=> Normalerweise war der Javascript-Teil zuerst fertig, dann kam der native Teil später. (basierend auf der Zeit, die sie verwendet haben).
=> Dies gilt nur für den ersten Build (Fresh Build).
=> für den Wiederaufbau:
Der native Teil brauchte nur 10 ~ 15 Sekunden, um die Änderungen zu überprüfen und da keine Änderung für den ursprünglichen Teil durchgeführt wurde, bevor der Javascript-Teil erstellt und bedient wurde. (Ich bin mir nicht sicher, ob der Javascript-Teil neu erstellt wurde oder nicht, aber es hat lange gedauert als der native Teil)
Deshalb hatten wir dieses Problem, die App lief und erforderte Dinge, die noch nicht existierten.
Bonus:
react-native run-ios/Android
startet automatisch den Dev-Server für Sie.react-native run-ios/Android
direkt nach react-native init <app_name>
liefen, lief alles gut. (weil Autostart-Funktion und die Zeit für den Neuaufbau als Zustand oben benötigt wurde).Die für diese Antwort benötigte Zeit war relativ zu meinem Rechner => kann bei anderen abweichen.
Ich hatte den gleichen Fehler und konnte die App nur über Xcode ausführen. react-native run-ios
hat nicht funktioniert. Um das Problem zu beheben, müssen Sie den Ordner build
unter YOUR_PROJECT/ios/build/
entfernen. Danach sollten Sie Ihre App erneut über react-native run-ios
ausführen können. Hoffe das hilft.
Was hat es für mich gelöst:
cd
in YOUR_PROJECT/ios
rm -r build
react-native run-ios
erneut ausAlternativ können Sie den Finder öffnen, zu YOUR_PROJECT/ios
navigieren und den Ordner build
löschen.
Führen Sie dann react-native run-ios again
aus.
Quelle: Andrew Bancroft
Lösung -> npm start
dann öffne das neue Terminal und gehe zu deinem Projektpfad und drücke react-native run-ios
es funktioniert für mich
Stellen Sie sicher, dass Ihre ATS-Einstellungen in der .plist-Datei korrekt sind.
Sie finden die Datei unter /ios/{{project_ Namens}}/Info.plist
localhost muss wie folgt als Ausnahme-Anforderungsziel definiert werden:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSExceptionDomains</key>
<dict>
<key>localhost</key>
<dict>
<key>NSExceptionAllowsInsecureHTTPLoads</key>
<true/>
</dict>
</dict>
</dict>
* (vergessen Sie nicht, dies in der Release-Version zu entfernen ..)
Für mich bestand das Problem darin, dass das JS-Bundle nicht erstellt werden konnte. Beim Erstellen von Xcode wird der Fehler nicht angezeigt, sodass Sie dies nicht wissen können. Um den Fehler zu finden, führen Sie den folgenden Befehl aus.
react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle
Für mich war der Fehler etwas mit der fehlenden PureRenderMixin-Komponente. Hier finden Sie die Lösung: https://github.com/facebook/react-native/issues/13078 . Grundsätzlich müssen Sie die Konfiguration von [email protected] manuell installieren. Dies kann durch Ausführen dieses Befehls erfolgen.
npm i --save [email protected]
Dieses Problem tritt jetzt für alle auf, da neuere Versionen von Reakt-Alphas (insbesondere Alpha.5) veröffentlicht werden und reaktiöse Builds brechen.
Versuchen Sie, diesen Code auszuführen ---
Sudo xcodebuild -Lizenz
Dies kann das Problem beheben. Das funktioniert für mich.
Dies ist ein Problem mit Reactor-Native v0.42.1. Versuchen Sie, alle Terminal- und XCode-Instanzen zu schließen, und führen Sie Folgendes aus:
launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios
Die einfachste/schnellste Möglichkeit, dies zu umgehen, ist das Beenden der App im Simulator (2 x Cmd + Shift + H
) und ein Neustart.
In den meisten Fällen tritt dieses Problem auf, wenn der DNS-Lookup/IP-Lookup localhost nicht findet.
Lösung:
Fügen Sie die localhost-IP-Adresse zu Ihrer Host-Datei hinzu.
sie können die folgenden Zeilen zu Ihrer etc-Host-Datei hinzufügen (/ etc/hosts)
127.0.0.1 localhost
255.255.255.255 Broadcasthost
:: 1 l. Okalhost
Um zu bestätigen, dass dies das Problem Ist, können Sie die Bündel-URL auf Safari treffen (wenn Sie es in Chrome versuchen, wird dies gelöst, aber Safari kann es nicht lösen). http: // localhost: 8081/index.ios.bundle? platform = ios & dev = true & minify = false
schließen Sie zuerst den Simulator, und führen Sie diese dann am Terminal aus
npm install
react-native run-ios
In meinem Fall wurde das Problem durch einen Neustart des Servers adb
behoben: adb kill-server && adb start-server
Überprüfen Sie Ihren 'localhost'-Schlüssel unter NSExceptionDomains dict in info.plist
wenn es nicht existiert, verursacht es einen Fehler.
Überprüfen Sie Ihren Netzwerk-Proxy, und fahren Sie ihn besser herunter.
oder u sollte einen anderen Weg finden, um den Packager-Server zu warten
Ich hatte dieses Problem auch für mich ... Das Problem bestand darin, dass der Packer nicht ausgeführt wurde. reag-native Reifen, um ein neues Terminalfenster zu öffnen und .../node_modules/react-native/packager/launchPackager.command
auszuführen, aber dies lief nicht. Das manuell laufen zu lassen (und es am Laufen zu halten) hat das für mich behoben.
Es ist mir auch passiert, nachdem ich meinen Mac neu gestartet habe. Es öffnet sich ein launchPackager-Terminalfenster, wenn Sie Ihre App auf dem Simulator ausführen. Ich schloss das Fenster und beendete den Vorgang (ich habe auch den Simulator geschlossen), dann wieder reaktives Run-Ios ausführen und alles funktioniert gut.
Ich hatte das gleiche Problem. Mein Problem war jedoch, dass mein Mac und iPhone nicht in demselben WLAN-Netzwerk waren.
Stellen Sie also sicher, dass sich alle in demselben Netzwerk befinden, und erstellen Sie sie erneut. Wenn dies nicht der Fall ist, probieren Sie die hier von anderen Mitgliedern genannten Lösungen aus.
Führen Sie einfach in Terminal react-native start
aus:
cd your react native app directory/ react-native start
Der Packager wird gestartet. Schließen Sie jetzt dieses Terminalfenster nicht. Führen Sie in einem anderen Terminalfenster Ihr Projekt aus. Dies ist der einzige Wunsch, den ich gefunden habe, damit er richtig funktioniert.
Angenommen, Sie verwenden nvm
und mehrere Versionen des Knotens, die installiert sind, ist hier die Lösung:
npm install -g react-native-cli
in node v6.9.5
aus. node v6.9.5
als Standard fest, indem Sie nvm alias default 6.9.5
ausführen.react-native run-ios
ausführenDas Problem ist, dass Sie über nvm
mehrere Knotenversionen installiert haben und zum Installieren von react-native-cli
die neueste Version des Knotens gewechselt oder installiert haben, die noch nicht als Standardknoten markiert ist, der noch in nvm
zeigt. Wenn Sie react-native run-ios
ausführen, wird ein neues Terminalfenster geöffnet, in dem nvm
nicht auf die Knotenversion verweist, in der Sie react-native-cli
installiert haben. Folgen Sie einfach dem obigen Setup, ich hoffe das sollte helfen.
Stellen Sie sicher, dass launchPackage.command
in einem Terminal ausgeführt wird, und versuchen Sie es erneut. Es wird das Bundle erstellen. Es ist ein bisschen wie ein Webpack-Dev-Server.
Führen Sie den folgenden Befehl aus:
killall -9 node
rm -rf ios/build
react-native run-ios
es wird launchpackager.command geöffnet und die anwendung wird auf dem ios simulator installiert
eine andere Sache, die für mich funktioniert, ist, das Projekt in Xcode zu öffnen und es anschließend zu bereinigen und zu erstellen. Normalerweise führt er den Verpackungsserver erneut aus und löst das Problem.
Ich war per Kabel und WLAN auf meinem Macbook mit dem Netzwerk verbunden, das WLAN deaktiviert und einfach auf Ausführen gestoßen und es hat funktioniert!
Wir haben dies umgangen, indem wir die Option SKIP_BUNDLING im Build-Skript entfernt haben, die von den RN-Dokumenten vorgeschlagen wurde, um den Debug-Build zu beschleunigen. Der eigentliche Fix (für unsere Sache) ist in RN 0.57 enthalten:
Dieser arbeitet für mich. Ich habe diese Zeilen zu Produktionszwecken aus meiner plist-Datei in iOS gelöscht. Der Simulator konnte die Bundle-Datei daher nicht abrufen. 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>
Ich arbeite mit RN 0.49.5
. Ich habe viele Methoden ausprobiert, aber es funktioniert niemand. Schließlich habe ich das herausgefunden ... Es ist einfach und leicht.
Die Hauptidee besteht darin, die localhost
in 127.0.0.1
zu ändern, aber der RN teilt Ihnen dies nicht mit. Es ist in RCTBundleURLProvider.m # - (BOOL) isPackagerRunning: (NSString *) Host.
Codeänderungen: oc
- NSString *Host = ipGuess ?: @"localhost";
+ NSString *Host = ipGuess ?: @"127.0.0.1";
Dies ist in Ordnung für den Simulator. Wenn es sich um ein Gerät handelt, ändern Sie einfach die IP-Adresse Ihres Computers.
127.0.0.1 localhost
nicht gelöscht wird npm install
& react-native upgrade
, um Ihr Projekt zurückzusetzenFür meinen Anwendungsfall musste ich das node_modules -Verzeichnis entfernen und npm install ausführen.
$ rm -rf node_modules (make sure you're in the ios project directory)
$ npm install
Wenn Sie die Fehlermeldung "dyld: Library not loaded: /usr/local/opt/icu4c/lib/libicui18n.58.dylib" erhalten, gehen Sie wie folgt vor:
$ 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
arbeitete für mich. Es gab eine Warnung in der Konsole, dass sie nicht gebündelt wurde.
Ok, das mag komisch klingen, aber keine dieser Antworten hat für mich funktioniert. Ich bin jetzt bei reaction-native 0.60 und das Problem trat auf iOS und Android auf. Die einzige Lösung, die für mich funktioniert hat, war, react-native run-ios
oder react-native run-Android
auszuführen. Wenn der Fehler auftritt, führen Sie npm install
aus (lassen Sie den Bundler und den Simulator geöffnet) und dann react-native run-ios
oder react-native run-Android
Ich habe alle Lösungen ausprobiert, aber nichts funktioniert:
Sudo xcodebuild -license
oderrm -r build
und führen Sie react-native run-ios
oder ausnpm start
und react-native run-ios
ausführenNSAppTransportSecurity
zu `hinzuIch habe das gelöst:
Sudo vi /private/etc/hosts
(wenn Sie VSCode verwenden, verwenden Sie diesen Sudo code /private/etc/hosts
)127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
react-native run-ios
erneut aus.Dies liegt wahrscheinlich daran, dass Sie das Metro Bundler-Fenster geschlossen haben oder es abgestürzt ist. Öffnen Sie einfach ein anderes Terminal/cmd im Projektverzeichnis und führen Sie npm start
aus. Durch Ausführen von npm start
React Native wird das MetroBundler-Fenster erneut gestartet. Nachdem der Bundler den BUNDLE
-Prozess abgeschlossen hat, laden Sie einfach die Anwendung neu und Sie können loslegen.
Dies liegt daran, dass Ihr Client Ihren Packager-Server nicht erreichen kann.
Wenn Sie ein chinesischer Coder sind, so wie ich bin, denke ich, dass Sie VPN über GFW nutzen können. Wenn sich Ihr VPN-Tool im globalen Modus befindet, werden alle Ihre Anforderungen durch die Welt geleitet und können nicht localhost empfangen
Versuchen Sie 'Auto Proxy Mode'.
Wenn Sie nicht aus China stammen oder die VPN-Einstellung bereits auf "Auto Proxy Mode" eingestellt ist, sollten Sie Ihren Packager-Server herunterfahren und es erneut versuchen.
Ich hatte das gleiche Problem und löste es, indem ich Änderungen an der Datei AppDelegate.m vornahm. ich habe mich verändert
jsCodeLocation = [[NSBundle mainBundle] URLForResource:@"main" withExtension:@"jsbundle"];
zu
jsCodeLocation = [[RCTBundleURLProvider sharedSettings] jsBundleURLForBundleRoot:@"index" fallbackResource:nil];
Und es hat bei mir funktioniert :)
Dieses Problem kann auftreten, wenn mehrere Versionen des Knotens von nvm verwaltet werden und die Standardversion nicht für die native Ausführung vorgesehen ist. (Stellen Sie sicher, dass es sich um Knoten 8.3 oder eine neuere Version handelt.)
react-native run-ios
öffnet ein neues Terminal und führt die Version des Knotens aus, die im $ PATH gefunden wurde.
Wenn es eine ältere Version des Knotens findet, die nicht von Native Reaction unterstützt wird, kann dies zu diesem Fehler führen.
Stellen Sie sicher, dass die Variable $ PATH bereits auf die beabsichtigte Version des Knotens zeigt (stellen Sie sicher, dass es sich um Knoten 8.3 oder höher handelt), wenn ein neues Terminal geöffnet wird.
Das hat das Problem für mich gelöst. Viel Glück.
... ein weiterer Grund, warum dies geschieht, ist, wenn Sie Visual Studio Code React Native Tools installiert haben, aber Sie versuchen immer wieder, React Native im Terminal zu verwenden der rote Bildschirm ohne Bündel.
stattdessen funktioniert das Reagieren von native aus vscode perfekt ...
Dieses Problem trat auf, weil der Metro-Bundler gestartet wurde und den Fokus erhielt, während ich in einem anderen Fenster auf meiner Tastatur tippte. Meine versehentliche Eingabe im neu geöffneten Terminalfenster führte zum Absturz des Metro-Bundlers. Wiederholung react-native run-ios
und geduldig wartend behoben.
Öffnen Sie eine Terminal-Fenster-CD in YOUR_PROJECT/ios. Entfernen Sie den Build-Ordner mit rm -r build
Danach öffne dein Projekt in Xcode und starte es einmal. Es wird beim Starten des Servers ausgeführt und erstellt die Datei main.jsbundle.
Wenn Sie nun wieder "Native Runtime" vom Terminal ausführen, funktioniert dies wie erwartet.
Hoffe, es wird helfen !.
Deaktivieren Sie den globalen Proxy (Shadowsocks)
So habe ich es gemacht:
versuchen Sie, dies hinzuzufügen:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
stellen Sie sicher, dass Sie .jsbundle in Ihrem Projekt haben
Hinzufügen
react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios
versuchen Sie in Ihrem reaktiven nativen Code, das Projekt erneut zu öffnen