Wenn ich ein reaktionsnatives Projekt ausführe, wird eine Fehlermeldung angezeigt no bundle URL present
, aber ich weiß nicht, welche Fehler ich mache. Ich war sehr verwirrt.
rm -rf ios/build/
watchman watch-del-all
Wenn ich ein reaktionsnatives Projekt ausführe, wird eine Fehlermeldung angezeigt no bundle URL present
, aber ich weiß nicht, welche Fehler ich mache. Ich war sehr verwirrt.
rm -rf ios/build/
watchman watch-del-all
Antworten:
Lösen Sie den Fehler No bundle URL present
durch:
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 den React Native iOS-Build mit einer einfachen Alias-Verknüpfung ausführen (ohne sich Gedanken über einige der häufig auftretenden roten Fehlerbildschirme des Todes machen zu müssen):
rni
Ich bin auch gerade auf dieses Problem gestoßen (zum ersten Mal mit React Native). Das Problem verschwand, als react-native run-ios
ich - während eine ios-Simulation ( ) lief - lief npm install
und dann react-native run-ios
wieder. Im Terminalfenster wurde angezeigt, dass es sich um eine Bündelung handelte, und dann zeigte der Simulator den Begrüßungsbildschirm an.
Überprüfen Sie diesen Link auf Kurzinformationen, nachdem Sie react-native init PropertyFinder
versucht haben, die Leitung zu verwenden npm start
(dieser funktioniert bei mir).
================================================== ======================
UPDATE für 16.9
Mein Port 8081 wurde von McAfee blockiert. Die direkte Verwendung eines anderen Ports funktionierte nicht react-native start --port=8082
undreact-native run-ios --port=8082
Versuchte fast alle hier angegebenen Lösungen. aber alles hat nicht funktioniert.
"react": "16.9.0",
"react-dom": "^16.12.0",
"react-native": "0.61.5",
Lösung:
In Xcode nach 8081 gesucht und alle durch 8082 ersetzt. Führen Sie dann dieselben Befehle aus, um die App zu erstellen und auszuführen. App funktioniert reibungslos
react-native start --port=8082
react-native run-ios --port=8082
Hatte das gleiche Problem, als ich meine App gebündelt habe. Überprüfen Sie, ob Ihr main.jsbundle
Projekt auf Ihr Hauptprojekt ausgerichtet ist
Wie in der Fehlermeldung angegeben:
Um der Xcode / iOS-Lizenz zuzustimmen, sind Administratorrechte erforderlich. Führen Sie "sudo xcodebuild -license" aus und wiederholen Sie diesen Befehl.
Das Ausführen des folgenden Befehls hat funktioniert:
sudo xcodebuild -license
Dieses Problem tritt auf, wenn Sie keine unsicheren Verbindungen über localhost zulassen oder wenn Sie versucht haben, unsichere Verbindungen über http zu akzeptieren.
Um dies zu beheben, fügen Sie Folgendes hinzu info.plist
:
<key>NSAppTransportSecurity</key>
<dict>
<key>NSAllowsArbitraryLoads</key>
<true/>
<key>NSAllowsArbitraryLoadsInWebContent</key>
<true/>
<key>NSAllowsLocalNetworking</key>
<true/>
</dict>
localhost
in Info.plist von auf meine lokale Netzwerkadresse geändert und sie wurde daher nicht aufgelöst. Ich habe einen Block für 'localhost' als Ausnahmedomäne hinzugefügt und es hat funktioniert.
Schließen Sie Ihren Simulator und das Terminal. Öffnen Sie ein neues und gehen Sie zu Ihrem Projekt. Aktualisieren Sie dann Ihr React-Native wie folgt:
react-native upgrade
Problem in: Unendliche Rekursion in RCTFatal, wenn das Bundle nicht ausgeführt werden kann .
Grund:
Dies liegt daran, dass die App den Server nicht herausfinden kann (der die Benutzeroberfläche bedient - per Javascript-Code).
Lösung:
npm run start
oder yarn start
zuerstLoading dependency graph, done.
).react-native run-ios/android
Erläuterung:
React Native besteht aus 2 Teilen:
Build-Befehle:
react-native run-ios/android
besteht darin, einen nativen Teil zu erstellen, dann auf Geräten bereitzustellen und die App auf Geräten (Simulator / Emulator / reales Gerät) zu starten. Dies dauerte normalerweise 3 bis 4 Minuten.
npm run start
oder yarn start
besteht darin, den Javascript-Teil zu erstellen und den Entwicklungsserver zu starten, um die erstellte Benutzeroberfläche für die App bereitzustellen. Dies dauerte normalerweise 30 Sekunden.
=> Normalerweise wurde der Javascript-Teil zuerst fertiggestellt, 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 bis 15 Sekunden, um die Änderungen zu überprüfen, und da keine Änderung für den nativen Teil vorgenommen wurde =>, bevor der Javascript-Teil erstellt und bereitgestellt wurde. (Ich bin 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 etwas, das noch nicht existierte.
Bonus:
react-native run-ios/android
startet den Entwicklungsserver automatisch für Sie.react-native run-ios/android
gleich danach react-native init <app_name>
gelaufen bist . (weil die Autostart-Funktion und die Zeit für den Neubau wie oben angegeben benötigt wurden).Die für diese Antwort verwendete Zeit war relativ zu meiner Maschine => kann bei anderen unterschiedlich sein.
Versuchen Sie, diesen Code auszuführen:
$ sudo xcodebuild -license
Dies kann das Problem beheben. Das funktioniert bei mir.
Ich hatte den gleichen Fehler und konnte die App nur über Xcode ausführen. react-native run-ios
funktioniert nicht. Um das Problem zu beheben, müssen Sie den build
Ordner unter entfernen YOUR_PROJECT/ios/build/
. Danach sollten Sie Ihre App react-native run-ios
erneut ausführen können . Hoffe das hilft.
In den meisten Fällen tritt dieses Problem auf, wenn die DNS-Suche / IP-Suche localhost nicht findet.
Lösung:
Versuchen Sie, die IP-Adresse localhost zu Ihrer Host-Datei usw. hinzuzufügen.
Sie können die folgenden Zeilen zu Ihrer etc-Hostdatei (/ etc / hosts) hinzufügen.
127.0.0.1 localhost
255.255.255.255 Broadcasthost
:: 1 l. ocalhost
Um zu bestätigen, dass dies das Problem ist , können Sie die Bundle-URL auf Safari aufrufen (wenn Sie es in Chrome versuchen, wird dies behoben, aber Safari kann es nicht lösen). http: // localhost: 8081 / index.ios.bundle? platform = ios & dev = true & minify = false
Stellen Sie sicher, dass Ihre ATS-Einstellungen in der .plist-Datei korrekt sind.
Sie finden die Datei unter /ios/{{project_name}}/Info.plist
localhost muss wie folgt als Ausnahmeanforderungsziel 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 bei der Release-Version zu entfernen.)
Für mich war das Problem, dass das JS-Bundle nicht erstellt werden konnte. Der Fehler beim Erstellen aus Xcode wird nicht angegeben, sodass Sie dies nicht wissen können. Führen Sie den folgenden Befehl aus, um den Fehler zu finden.
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 fehlender PureRenderMixin-Komponente. Die Lösung finden Sie hier: https://github.com/facebook/react-native/issues/13078 . Grundsätzlich müssen Sie react@16.0.0-alpha.3 manuell installieren. Dies kann durch Ausführen dieses Befehls erfolgen.
npm i --save react@16.0.0-alpha.3
Dieses Problem tritt jetzt für alle auf, da neuere Versionen von Reaktionsalphas veröffentlicht werden (insbesondere Alpha.5) und reaktionsnative Builds beschädigt werden.
"plugins": ["transform-decorators-legacy"]
Sie vielleicht, zu Ihrer .babelrc-Datei hinzuzufügen. Oder versuchen Sie es mit dem Connect HOC.
The node type SpreadProperty has been renamed to SpreadElement
und seine referenzierende @babel
Bibliothek innerhalb von node_modules
, ich habe nichts gefunden, das dies angesprochen hat.
Lösung ->
npm start
dann öffne neues Terminal und gehe zu deinem Projektpfad und drücke dann, dass
react-native run-ios
es für mich funktioniert
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 dem navigieren YOUR_PROJECT/ios
und ihn löschenbuild
Ordner .
Dann renne react-native run-ios
wieder .
Quelle: Andrew Bancroft
Dies ist ein Problem mit react-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
Schließen Sie zuerst den Simulator und führen Sie diese dann auf dem Terminal aus
npm install
react-native run-ios
Einfach im Terminal ausführen react-native start
:
cd your react native app directory/ react-native start
Der Packager wird gestartet. Schließen Sie dieses Terminalfenster jetzt nicht. Führen Sie in einem anderen Terminalfenster Ihr Projekt aus. Dies ist der einzige Wunsch, den ich gefunden habe, damit es richtig funktioniert.
Ich habe den einfachsten / schnellsten Weg gefunden, dies zu umgehen, indem ich die App im Simulator (2 x Cmd + Shift + H
) beende und neu starte.
Ich hatte das gleiche Problem. Mein Problem war jedoch, dass sich mein Mac und mein iPhone nicht im selben WLAN-Netzwerk befanden.
Stellen Sie also sicher, dass sich alle im selben Netzwerk befinden, und erstellen Sie sie erneut. Ist dies nicht der Fall, probieren Sie die von anderen Mitgliedern hier genannten Lösungen aus.
Überprüfen Sie Ihren Netzwerk-Proxy und fahren Sie ihn besser herunter.
oder Sie sollten einen anderen Weg finden, um den Packager-Server zu warten
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 habe dieses Fenster geschlossen und den Prozess beendet (ich habe auch den Simulator geschlossen), dann wieder reaktionsnative Run-Ios ausgeführt und alles funktioniert einwandfrei.
In meinem Fall wurde das Problem durch einen Neustart des adb
Servers behoben :adb kill-server && adb start-server
Ich hatte dieses Problem auch für mich ... das Problem war, dass der Packer nicht lief, es schien wahrscheinlich, weil meine Standard-Shell zsh war. Reagieren Sie native Reifen, um ein neues Terminalfenster zu öffnen und zu laufen, .../node_modules/react-native/packager/launchPackager.command
aber dies lief nicht. Das manuell auszuführen (und es am Laufen zu halten) hat dies für mich behoben.
Überprüfen Sie Ihren 'localhost'-Schlüssel bei NSExceptionDomains dict in info.plist
Wenn es nicht existiert, verursacht es einen Fehler.
Angenommen, Sie verwenden nvm
und mehrere Versionen des Knotens installiert, ist hier die Lösung:
npm install -g react-native-cli
in node v6.9.5
. node v6.9.5
standardmäßig durch Ausführen machennvm alias default 6.9.5
react-native run-ios
Das Problem ist, dass Sie mehrere Versionen des Knotens über nvm
installiert react-native-cli
haben und zur Installation die neueste Version des Knotens gewechselt oder installiert haben, die noch nicht als Standardknoten zum Zeigen markiert ist nvm
. Wenn Sie dies ausführen, react-native run-ios
wird ein weiteres neues Terminalfenster geöffnet, in dem standardmäßig nvm
nicht auf die Knotenversion verwiesen wird, auf der Sie installiert haben react-native-cli
. Folgen Sie einfach dem obigen Setup, ich hoffe das sollte helfen.
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
Ich arbeite mit RN 0.49.5
. Ich habe viele Methoden ausprobiert, aber niemand funktioniert. Schließlich habe ich das herausgefunden. Es ist einfach und leicht.
Hauptidee ist , die sich ändern localhost
zu 127.0.0.1
, aber es ist nicht , wo die RN sagt. Es befindet sich in RCTBundleURLProvider.m # - (BOOL) isPackagerRunning: (NSString *) Host .
Codeänderungen:
oc
- NSString *host = ipGuess ?: @"localhost";
+ NSString *host = ipGuess ?: @"127.0.0.1";
Dies ist für den Simulator in Ordnung. Wenn es sich um ein Gerät handelt, ändern Sie einfach die IP-Adresse in die Ihres Computers.
Eine andere Sache, die für mich funktioniert, ist, das Projekt in xcode zu öffnen und es dann zu bereinigen und zu erstellen. Normalerweise wird der Verpackungsserver erneut ausgeführt und das Problem behoben.
Führen Sie den folgenden Befehl aus:
killall -9 node
rm -rf ios/build
react-native run-ios
Es öffnet die Datei launchpackager.command und die Anwendung wird auf dem iOS-Simulator installiert