wake-up-neo.com

Was bedeutet "Keine Bundle-URL vorhanden" in "reaktiver Natur"?

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.

 enter image description here

130
Yingch Xue

Beheben Sie den Fehler No bundle URL present Mit:

  • Führen Sie in Ihrem Projektstammverzeichnis den folgenden Befehl aus, um das iOS-Erstellungsverzeichnis zu löschen und andere native React -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 den systemeigenen Workflow React, um diesen Fehler zu vermeiden. Kombinieren Sie dazu die obige Befehlskombination zu einem Alias ​​und hängen Sie ihn mit dem folgenden Befehl an die Bash-Konfigurationsdatei .bashrc an:

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

106
Luke Schoen

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)

62
Skip Suva

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

26
Mateo Marconi

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.

21
cwRichardKim

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>
16
Witalo Benicio

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

 

16
parse

Grund:

Dies liegt daran, dass die App den Server nicht ermitteln kann (der die Benutzeroberfläche bereitstellt - durch Javascript-Code).

Lösung:

  • Vergewissere dich, dass alles, was mit Native Closed zu tun hat (nicht notwendig, nur um einen sauberen Start für meine Lösung zu haben, nach meiner Erklärung, du kannst herausfinden, ob das nötig ist oder nicht)
  • führen Sie zuerst npm run start oder yarn start aus
  • warten Sie, bis dieser Befehl abgeschlossen ist (normalerweise sehen Sie Loading dependency graph, done.).
  • react-native run-ios/Android ausführen

Erläuterung:

  • React Native wird mit 2 Teilen geliefert:

    • Native Teil
    • Javascript-Teil
  • 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.
  • Wenn 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).
  • Andere "entfernende" Lösungen funktionierten, weil sie den Wiederaufbau erzwungen hatten.

Die für diese Antwort benötigte Zeit war relativ zu meinem Rechner => kann bei anderen abweichen.

13
Khoa

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.

11
sonlexqt

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-ios erneut aus

Alternativ 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

6
l3aronsansgland

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

5
rahul.sapkal23

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

5

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].3 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.

5
urbancvek

Versuchen Sie, diesen Code auszuführen ---

Sudo xcodebuild -Lizenz

Dies kann das Problem beheben. Das funktioniert für mich.

4
Kusal Kithmal

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
4
Shobhit Sharma

Die einfachste/schnellste Möglichkeit, dies zu umgehen, ist das Beenden der App im Simulator (2 x Cmd + Shift + H) und ein Neustart.

4
Toby Flemming

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

3
Vivek

schließen Sie zuerst den Simulator, und führen Sie diese dann am Terminal aus

npm install

react-native run-ios
3

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

2
Grzegorz Pawlik

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

wenn es nicht existiert, verursacht es einen Fehler.

2
ogelacinyc

Ü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

2
user1684758

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.

2
Chris

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.

2
gianni

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.

2

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.

1

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

  1. Angenommen, Sie führen npm install -g react-native-cli in node v6.9.5 aus. 
  2. Legen Sie nun node v6.9.5 als Standard fest, indem Sie nvm alias default 6.9.5 ausführen.
  3. Jetzt react-native run-ios ausführen

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

1
Syed

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.

0
Codler

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

0
Saif Siddiqui

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.

0
Eliran Goshen

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!

0
WiRa

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:

https://github.com/facebook/react-native/issues/20553

0
mikeh

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>
0
Tarik Chakur

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.

0
Bruce Lee
  1. Überprüfen Sie Ihre Hosts, dass 127.0.0.1 localhost nicht gelöscht wird 
  2. stellen Sie sicher, dass der Netzwerkagent nicht eingerichtet ist 
  3. dann npm install & react-native upgrade, um Ihr Projekt zurückzusetzen
0
Jane

Fü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
0
Hau Le

export FORCE_BUNDLING=true arbeitete für mich. Es gab eine Warnung in der Konsole, dass sie nicht gebündelt wurde.

0
Techmaddy

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

0
Alcides Bezerra

Ich habe alle Lösungen ausprobiert, aber nichts funktioniert:

  • Sudo xcodebuild -license oder
  • Entfernen Sie den Erstellungsordner mit rm -r build und führen Sie react-native run-ios oder aus
  • npm start und react-native run-ios ausführen
  • Fügen Sie NSAppTransportSecurity zu `hinzu

Ich habe das gelöst:

  • Öffnen Sie die Host-Datei Sudo vi /private/etc/hosts (wenn Sie VSCode verwenden, verwenden Sie diesen Sudo code /private/etc/hosts)
  • Fügen Sie drei Zeilen hinzu, wenn es nicht vorhanden ist
127.0.0.1 localhost
255.255.255.255 broadcasthost
::1 localhost
  • Führen Sie react-native run-ios erneut aus.
0
Le Xuan Tien

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.

0
Kiran Maniya

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.

0
Jared Chen

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

0
Waleed Naveed

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.

0
Arun Kandregula

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

0
Edoardo

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.

0
schmijos

Ö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 !.

0
vikram

Deaktivieren Sie den globalen Proxy (Shadowsocks)

0
ynceonrudi

So habe ich es gemacht:

  • Öffnen Sie ein Terminalfenster
  • cd in YOUR_PROJECT/ios
  • Entfernen Sie den Ordner build mit rm -r build
  • Führen Sie erneut "react-native" aus
0
SoftwareTheory

versuchen Sie, dies hinzuzufügen:

<key>NSAppTransportSecurity</key>
<dict>
    <key>NSAllowsArbitraryLoads</key>
    <true/>
    <key>NSAllowsArbitraryLoadsInWebContent</key>
    <true/>
    <key>NSAllowsLocalNetworking</key>
    <true/>
</dict>

0
G. Adnane

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

0
Saloni Parikh