Was bedeutet "Keine Bundle-URL vorhanden" in "React-Native"?

199

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.

Geben Sie hier die Bildbeschreibung ein

Yingch Xue
quelle
2
Ich habe dieses Problem in der nativen iOS-App festgestellt. Öffnen Sie einfach das xcodeproj im ios-Ordner in xcode und führen Sie es von dort aus. Stellen Sie sicher, dass Sie nicht auf dem Proxy sind.
Abhay Shiro
9
Die meiste Zeit hilft mir das Löschen des Build-Verzeichnissesrm -rf ios/build/
onmyway133
Das hilft mir in den meisten Situationen. Aber in diesem speziellen Fall konnte ich diesen Fehler durch diesen Befehl beheben (Reaktion-native: "0.60.4"):watchman watch-del-all
O. Borcuhin
Dies bedeutet normalerweise, dass Ihr Metro-Bundler nicht ausgeführt wird. Einige Benutzer führen dies in ihren eigenen Terminals oder auf dem Standard-Computerterminal aus. Normalerweise schließe ich das Terminal, starte die App neu und das behebt es.
Sara Inés Calderón

Antworten:

128

Lösen Sie den Fehler No bundle URL presentdurch:

  • Führen Sie den folgenden Befehl in Ihrem Projektstammverzeichnis aus, um das iOS-Erstellungsverzeichnis zu löschen und andere React Native-Sitzungen zu beenden (vorausgesetzt, sie werden auf dem Standardport 8081 ausgeführt), bevor Sie sie neu erstellen:

rm -rf ios/build/; kill $(lsof -t -i:8081); react-native run-ios

  • Aktualisieren Sie Ihren React Native-Workflow, um diese Fehler zu vermeiden, indem Sie die obige Befehlskombination zu einem Alias ​​kombinieren und mit diesem Befehl an Ihre Bash-Konfigurationsdatei .bashrc anhängen:

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

Luke Schoen
quelle
1
Sehr nützlich für mich. Das einzige andere, was ich tun musste, war, den Simulator zu verlassen, wenn er nicht bereits geschlossen war.
AnnawanDev
74

Ich bin auch gerade auf dieses Problem gestoßen (zum ersten Mal mit React Native). Das Problem verschwand, als react-native run-iosich - während eine ios-Simulation ( ) lief - lief npm installund dann react-native run-ioswieder. 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 PropertyFinderversucht 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=8082undreact-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

Geben Sie hier die Bildbeschreibung ein

Suva überspringen
quelle
2
@dcp Haben Sie mehrmals versucht, "react-native run-ios" auszuführen, während es bereits hochgefahren ist? Es scheint, als müsste ich meine App jedes Mal, wenn ich sie hochfahre, mindestens zweimal ausführen (zwischen jedem Mal etwa 2 Minuten warten).
Überspringen Sie Suva
funktioniert für mich, würde aber gerne eine langfristige Lösung finden, die diesen Schritt nicht jedes Mal beinhaltet.
Mheavers
31

Hatte das gleiche Problem, als ich meine App gebündelt habe. Überprüfen Sie, ob Ihr main.jsbundleProjekt auf Ihr Hauptprojekt ausgerichtet ist

analysieren
quelle
3
Das ist mir irgendwie im Rahmen meines reaktionsnativen 0.60-Upgrades passiert.
IonicBurger
Videolink
das ist mir auch passiert. aber dann habe ich darauf geklickt. aber immer noch das gleiche Problem
Jason G
29

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
cwRichardKim
quelle
tks das ist Arbeit für mich nach dem Ausführen im Terminal und dem Einbau von xcode nach
tess hsu
Nee. Arbeitet immer noch nicht für mich. Ich laufe in einem anderen Hafen, 8081 ist blockiert
Ashish Singh Rawat
27

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>
Witalo Benicio
quelle
4
Was für ein Held dieser Typ ist. Hat mich und mein Macbook davor bewahrt, aus dem Fenster zu springen! Ich hatte meine Ausnahmedomäne localhostin 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.
Darius
1
Im Ernst, deine Antwort kam wie Gott zu mir ... Bruder, du rockst ... Ich habe keine Worte. Danke, ich habe mich ab Donnerstag daran gehalten.
Tushar Pandey
26

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 .

Mateo Marconi
quelle
1
Ja, aber in meinem Fall musste ich kein Upgrade durchführen. Terminal und Simulator zu schließen war genug für mich.
Gianni
@gianni Welche Version von react-native verwenden Sie gerade?
Mateo Marconi
1
Schien keinen Unterschied zu machen, sah immer noch den Fehler.
SSH Dies ist der
2
Das hat bei mir funktioniert, aber Sie müssen auch den Simulator schließen und dann reaktionsnative Run-Ios ausführen
James O'Brien
1
Hat nicht geholfen `` `info Es wurde keine Version übergeben. Abrufen der neuesten ... warn Die angegebene Version "0.61.5" ist bereits in node_modules installiert und erfüllt den Semverbereich "0.61.5". Kein Upgrade erforderlich `` `
Ashish Singh Rawat
19

Grund:

Dies liegt daran, dass die App den Server nicht herausfinden kann (der die Benutzeroberfläche bedient - per Javascript-Code).

Lösung:

  • Stellen Sie sicher, dass alles, was mit der Reaktion von Native zu tun hat, geschlossen ist (nicht erforderlich, nur um einen sauberen Start für meine Lösung zu haben. Nach meiner Erklärung können Sie herausfinden, ob dies erforderlich ist oder nicht).
  • laufen npm run startoder yarn startzuerst
  • Warten Sie, bis dieser Befehl ausgeführt wurde (normalerweise werden Sie sehen Loading dependency graph, done.).
  • Lauf react-native run-ios/android

Erläuterung:

  • React Native besteht aus 2 Teilen:

    • Einheimischer Teil
    • Javascript Teil
  • Build-Befehle:

    • react-native run-ios/androidbesteht 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 startoder yarn startbesteht 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.
  • Deshalb lief alles gut, als du react-native run-ios/androidgleich 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).
  • Andere "Entfernen" -Lösungen funktionierten, weil sie den Wiederaufbau erzwangen.

Die für diese Antwort verwendete Zeit war relativ zu meiner Maschine => kann bei anderen unterschiedlich sein.

Khoa
quelle
14

Versuchen Sie, diesen Code auszuführen:

$ sudo xcodebuild -license

Dies kann das Problem beheben. Das funktioniert bei mir.

Kusal Kithmal
quelle
11

Ich hatte den gleichen Fehler und konnte die App nur über Xcode ausführen. react-native run-iosfunktioniert nicht. Um das Problem zu beheben, müssen Sie den buildOrdner unter entfernen YOUR_PROJECT/ios/build/. Danach sollten Sie Ihre App react-native run-ioserneut ausführen können . Hoffe das hilft.

sonlexqt
quelle
9

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

Vivek
quelle
Nach der Migration auf einen brandneuen Computer war dies das, was ich brauchte. TY!
Jeffctown
Ja gleich hier auf einem neuen Computer!
Vishal Sakaria
Mein Problem war das Einstellen des Proxys in meiner Netzwerkkonfiguration. Ich entferne nur den Proxy und es funktioniert gut.
Ahmad Khani
8

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.)

Serdar Değirmenci
quelle
7

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 [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 Reaktionsalphas veröffentlicht werden (insbesondere Alpha.5) und reaktionsnative Builds beschädigt werden.

urbancvek
quelle
der Befehl 'react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/ main.jsbundle 'beschreibt jeden Fehler beim Erstellen des Bundles. Bis dieser Befehl erfolgreich ist, funktionieren run-ios nicht
eric f.
Mein aktueller Fehler ist, dass das '@connect' von 'react-redux' irgendwie nicht erkannt wird.
Eric f.
Versuchen "plugins": ["transform-decorators-legacy"]Sie vielleicht, zu Ihrer .babelrc-Datei hinzuzufügen. Oder versuchen Sie es mit dem Connect HOC.
urbancvek
@urbancvek, für mich ist der Fehler dies The node type SpreadProperty has been renamed to SpreadElementund seine referenzierende @babelBibliothek innerhalb von node_modules, ich habe nichts gefunden, das dies angesprochen hat.
Daniel
7

Lösung -> npm startdann öffne neues Terminal und gehe zu deinem Projektpfad und drücke dann, dass react-native run-ioses für mich funktioniert

rahul.sapkal23
quelle
7

Was hat es für mich gelöst:

  • Öffnen Sie ein Terminalfenster
  • cd in YOUR_PROJECT/ios
  • Entfernen Sie den Build-Ordner mit rm -r build
  • Führen Sie react-native run-ioserneut aus

Alternativ können Sie den Finder öffnen, zu dem navigieren YOUR_PROJECT/iosund ihn löschenbuild Ordner .

Dann renne react-native run-ios wieder .

Quelle: Andrew Bancroft

l3aronsansgland
quelle
5

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
Shobhit Sharma
quelle
3
"Dies ist ein Problem mit React-Native v0.42.1." - Es gibt es auch mit v.0.43.
DCP
5

Schließen Sie zuerst den Simulator und führen Sie diese dann auf dem Terminal aus

npm install

react-native run-ios
Pramodya Abeysinghe
quelle
5

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.

Prakash Salawria
quelle
4

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.

Toby Flemming
quelle
4

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.

Abraham Jagadeesh
quelle
3

Ü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

user1684758
quelle
Danke, ich habe das globale VPN geöffnet, um die Große Feuerwand zu überqueren!
BaiJiFeiLong
Ich habe die automatische Proxy-Konfiguration in Mac deaktiviert. Es hat nach 2 Tagen funktioniert: D ... Danke.
Nirav Jain
Ich hatte tatsächlich ein VPN, an das ich mich nicht einmal erinnerte. Herunterfahren hat funktioniert!
Pedro Marques
3

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.

Gianni
quelle
3

In meinem Fall wurde das Problem durch einen Neustart des adbServers behoben :adb kill-server && adb start-server

Grzegorz Pawlik
quelle
3

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.commandaber dies lief nicht. Das manuell auszuführen (und es am Laufen zu halten) hat dies für mich behoben.

Chris
quelle
3

Überprüfen Sie Ihren 'localhost'-Schlüssel bei NSExceptionDomains dict in info.plist

Wenn es nicht existiert, verursacht es einen Fehler.

ogelacinyc
quelle
2

Angenommen, Sie verwenden nvmund mehrere Versionen des Knotens installiert, ist hier die Lösung:

  1. Sagen Sie, dass Sie laufen npm install -g react-native-cliin node v6.9.5.
  2. Jetzt node v6.9.5standardmäßig durch Ausführen machennvm alias default 6.9.5
  3. Jetzt renn react-native run-ios

Das Problem ist, dass Sie mehrere Versionen des Knotens über nvminstalliert react-native-clihaben 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-ioswird ein weiteres neues Terminalfenster geöffnet, in dem standardmäßig nvmnicht auf die Knotenversion verwiesen wird, auf der Sie installiert haben react-native-cli. Folgen Sie einfach dem obigen Setup, ich hoffe das sollte helfen.

Syed
quelle
2

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

Saloni Parikh
quelle
1

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 localhostzu 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.

Bruce Lee
quelle
Könnten Sie Ihre Lösung näher erläutern?
Ashish Singh Rawat
1

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.

Eliran Goshen
quelle
1

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

Saif Siddiqui
quelle
0

Stellen Sie sicher launchPackage.command, dass 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.

Codler
quelle