Co oznacza „Brak adresu URL pakietu” w języku ojczystym reagującym?

199

Kiedy uruchamiam projekt „reagujący”, pojawia się błąd no bundle URL present, ale nie wiem, jakie błędy popełniam, byłem bardzo zdezorientowany.

wprowadź opis zdjęcia tutaj

Yingch Xue
źródło
2
Napotkałem ten problem w reakcji na natywną aplikację iOS. Wystarczy otworzyć xcodeproj w folderze ios w xcode i uruchomić go stamtąd. Upewnij się, że nie masz proxy.
Abhay Shiro
9
W większości przypadków wyczyszczenie katalogu kompilacji pomaga mirm -rf ios/build/
onmyway133,
To pomaga mi w większości sytuacji. Ale w tym konkretnym przypadku udało mi się naprawić ten błąd za pomocą tego polecenia (reakcja-natywna: „0.60.4”):watchman watch-del-all
O. Borcuhin,
Zazwyczaj oznacza to, że twój program metra nie działa, niektórzy ludzie uruchamiają go we własnych terminalach lub na standardowym terminalu komputerowym. Zwykle zamykam terminal, ponownie uruchamiam aplikację i to naprawia.
Sara Inés Calderón

Odpowiedzi:

128

Rozwiąż błąd No bundle URL presentprzez:

  • Uruchom następującą komendę w katalogu głównym projektu, aby usunąć katalog kompilacji iOS i zabić inne sesje React Native (zakładając, że działają one na domyślnym porcie 8081) przed ponowną kompilacją:

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

  • Zaktualizuj przepływ pracy React Native, aby uniknąć tego błędu, łącząc powyższą kombinację poleceń w alias i dołączając ją do pliku konfiguracyjnego Bash .bashrc za pomocą tego polecenia:

echo "alias rni=\"kill \$(lsof -t -i:8081); rm -rf ios/build/; react-native run-ios\"" >> ~/.bashrc; source ~/.bashrc

Teraz możesz uruchomić React Native kompilację na iOS (bez obawy o pojawienie się niektórych ekranów z czerwonymi błędami śmierci) za pomocą prostego skrótu aliasowego:

rni

Luke Schoen
źródło
1
Bardzo przydatne dla mnie. Jedyne, co musiałem zrobić, to wyjść z symulatora, jeśli nie jest już zamknięty.
AnnawanDev
74

Właśnie wpadłem na ten problem (pierwsze uruchomienie React Native). Problem zniknął, gdy - podczas uruchomionej symulacji ios ( react-native run-ios) - uruchomiłem, npm installa potem react-native run-iosznowu. W oknie terminala pokazało, że jest to wiązanie, a następnie symulator pokazał ekran powitalny.

Sprawdź ten link, aby zobaczyć majtki po react-native init PropertyFinderlinii spróbuj użyć npm start(ten działa dla mnie)

================================================== ======================

AKTUALIZACJA dla 16.9

Mój port 8081 został zablokowany przez McAfee. Bezpośrednie używanie innego portu nie działało react-native start --port=8082ireact-native run-ios --port=8082

Próbowałem prawie wszystkich podanych tutaj rozwiązań. ale nic nie działało.

        "react": "16.9.0",
        "react-dom": "^16.12.0",
        "react-native": "0.61.5",

Rozwiązanie:

Szukano 8081 w Xcode i zastąpiłem je wszystkie 8082. Następnie uruchom te same polecenia, aby zbudować i uruchomić aplikację. Aplikacja działa płynnie

react-native start --port=8082
react-native run-ios --port=8082

wprowadź opis zdjęcia tutaj

Pomiń Suva
źródło
2
@dcp Czy kilkakrotnie próbowałeś uruchomić „Reaktywny natywny run-ios”, gdy jest już uruchomiony? Wygląda na to, że za każdym razem, gdy uruchamiam aplikację, muszę to zrobić co najmniej dwa razy (odczekać około 2 minuty za każdym razem).
Pomiń Suva
działa dla mnie, ale chciałbym znaleźć długoterminową poprawkę, która nie wymagałaby tego kroku za każdym razem.
mheavers
31

Miałem ten sam problem, kiedy pakowałem swoją aplikację. Sprawdź, czy Twój main.jsbundlecel jest skierowany do głównego Projektu

analizować
źródło
3
To jakoś mi się przydarzyło w ramach mojej natywnej aktualizacji 0.60.
IonicBurger
link wideo do tego samego, youtube.com/watch?v=eCs2GsWNkoo
jrhamza
to też mi się przydarzyło. ale potem kliknąłem na to. ale wciąż ten sam problem
Jason G
29

Zgodnie z instrukcjami w komunikacie o błędzie:

Zgoda na licencję Xcode / iOS wymaga uprawnień administratora, uruchom „sudo xcodebuild -license”, a następnie ponów polecenie.

Uruchomienie następującego polecenia działało:

sudo xcodebuild -license
cwRichardKim
źródło
tks, to działa dla mnie po uruchomieniu w terminalu i
wbudowaniu
Nie. Nadal nie działa dla mnie. Pracuję w innym porcie, 8081 jest zablokowany
Ashish Singh Rawat
27

Ten problem występuje, gdy nie zezwalasz na niezabezpieczone połączenia za pośrednictwem hosta lokalnego lub próbujesz zaakceptować niezabezpieczone połączenia przez http.

Aby to naprawić, dodaj to info.plist:

<key>NSAppTransportSecurity</key>
    <dict>
        <key>NSAllowsArbitraryLoads</key>
        <true/>
        <key>NSAllowsArbitraryLoadsInWebContent</key>
        <true/>
        <key>NSAllowsLocalNetworking</key>
        <true/>
    </dict>
Witalo Benicio
źródło
4
Jakim bohaterem jest ten facet. Uratowałem mnie i mojego macbooka przed wyskakiwaniem przez okno! Zmieniłem domenę wyjątku z localhostna adres mojej sieci lokalnej w Info.plist i dlatego nie został rozwiązany. Dodałem blok dla „localhost” jako domenę wyjątku i zadziałał.
Dariusz
1
Poważnie, twoja odpowiedź nadeszła jak bóg dla mnie ... bracie, ty rządzisz ..... Nie mam słów. dziękuję, utknąłem w nim od czwartku.
Tushar Pandey
26

Zamknij symulator i terminal. Otwórz nowy i przejdź do swojego projektu, a następnie zaktualizuj swój native-reakcyjny w następujący sposób:

react-native upgrade

Problem w: nieskończona rekurencja w RCTFatal, gdy pakiet nie wykonuje się .

Mateo Marconi
źródło
1
tak, ale w moim przypadku nie musiałem aktualizować. Wystarczył mi terminal i symulator.
gianni
@gianni Jaką wersję Re-Native używasz teraz?
Mateo Marconi
1
Wydawało się, że nie robi żadnej różnicy, nadal widzę błąd.
SSH,
2
To zadziałało dla mnie, ale musisz również zamknąć symulator, a następnie uruchomić natywny run-ios
James O'Brien
1
Nie pomógł `` info Nie przesłano żadnej wersji. Pobieranie najnowszej ... ostrzegaj Określona wersja „0.61.5” jest już zainstalowana w module node_modules i spełnia zakres semvera „0.61.5”. Nie trzeba aktualizować ``
Ashish Singh Rawat
19

Powód:

Wynika to z faktu, że aplikacja nie może znaleźć serwera (który obsługuje interfejs użytkownika - po kodzie javascript).

Rozwiązanie:

  • Upewnij się, że wszystko, co jest związane z reakcją natywną zamknięte (nie jest konieczne, tylko po to, aby mieć czysty start dla mojego rozwiązania, po moim wyjaśnieniu możesz dowiedzieć się, czy jest to konieczne, czy nie)
  • uruchomić npm run startlub yarn startpierwszy
  • poczekaj na wykonanie tego polecenia (zwykle zobaczysz Loading dependency graph, done.)
  • biegać react-native run-ios/android

Wyjaśnienie:

  • React Native zawiera 2 części:

    • Część natywna
    • Część JavaScript
  • Kompiluj polecenia:

    • react-native run-ios/androidjest zbudowanie części natywnej, następnie wdrożenie na urządzenia i uruchomienie aplikacji na urządzeniach (symulator / emulator / urządzenie rzeczywiste). Zwykle trwało to 3 ~ 4 minuty.

    • npm run startlub yarn startpolega na zbudowaniu części javascript i uruchomieniu serwera deweloperów w celu obsługi wbudowanego interfejsu użytkownika w aplikacji. Zwykle zajęło to 30 sekund.

=> Zwykle część javascript kończyła się jako pierwsza, a część natywna przyszła później. (na podstawie wykorzystanego czasu).

=> dotyczy to tylko pierwszej kompilacji (nowa kompilacja).

=> do przebudowy:

  • Część natywna zajęła 10 ~ 15 sekund sprawdzenie zmian i ponieważ żadna zmiana dla części natywnej => nie została wykonana przed zbudowaniem i udostępnieniem części javascript. (Nie jestem pewien, czy część javascript została przebudowana, czy nie, ale zajęło to dużo czasu niż część natywna)

  • Właśnie dlatego mieliśmy ten problem, aplikacja działała i wymagała czegoś, co jeszcze nie istniało.

Premia:

  • react-native run-ios/android automatycznie uruchomi dla ciebie serwer deweloperów.
  • Właśnie dlatego, gdy pobiegłeś react-native run-ios/androidzaraz potemreact-native init <app_name> , wszystko poszło dobrze. (ponieważ funkcja automatycznego uruchamiania i czas potrzebny na świeżą kompilację jak powyżej).
  • Inne rozwiązania „usuwające” działały, ponieważ wymuszały odbudowę.

Czas wykorzystany na tę odpowiedź był względny w stosunku do mojej maszyny => może się różnić na innych.

Khoa
źródło
14

Spróbuj uruchomić ten kod:

$ sudo xcodebuild -license

To może rozwiązać problem. To działa dla mnie.

Kusal Kithmal
źródło
11

Miałem ten sam błąd i mogłem uruchomić aplikację tylko przez Xcode. react-native run-iosnie działał. Aby rozwiązać problem, musisz usunąć buildfolder z YOUR_PROJECT/ios/build/. Po tym powinieneś być w stanie ponownie uruchomić aplikację react-native run-ios. Mam nadzieję że to pomoże.

sonlexqt
źródło
9

Większość przypadków ten problem występuje, gdy wyszukiwanie DNS / IP nie może znaleźć hosta lokalnego.

Rozwiązanie :

Spróbuj dodać adres IP hosta lokalnego do pliku hosta itp.

możesz dodać poniższe wiersze do pliku hosta etc (/ etc / hosts)

127.0.0.1 localhost

255.255.255.255 broadcasthost

:: 1 l. ocalhost

Aby potwierdzić, że jest to problem , możesz trafić na adres URL pakietu podczas safari (jeśli spróbujesz go w Chrome, rozwiąże to problem, ale safari nie będzie w stanie go rozwiązać). http: // localhost: 8081 / index.ios.bundle? platform = ios & dev = true & minify = false

Vivek
źródło
Po migracji na zupełnie nowy komputer tego właśnie potrzebowałem. TY!
jeffctown
Tak samo tutaj na nowym komputerze!
Vishal Sakaria,
Moim problemem było ustawienie serwera proxy w konfiguracji sieci, po prostu usuwam serwer proxy i działa dobrze.
Ahmad Khani,
8

Upewnij się, że ustawienia ATS są prawidłowe w pliku .plist.

Plik można znaleźć na stronie /ios/{{project_name}}/Info.plist

localhost musi być zdefiniowany jako cel żądania wyjątku w następujący sposób:

<key>NSAppTransportSecurity</key>
    <dict>
    <key>NSExceptionDomains</key>
    <dict>
        <key>localhost</key>
        <dict>
            <key>NSExceptionAllowsInsecureHTTPLoads</key>
            <true/>
        </dict>
    </dict>
</dict>

* (nie zapomnij usunąć tego w wersji wydania).

Serdar Değirmenci
źródło
7

Dla mnie problemem było to, że nie mógł stworzyć pakietu JS. Nie podaje błędu podczas budowania z Xcode, więc nie możesz tego wiedzieć. Aby znaleźć błąd, uruchom następujące polecenie.

react-native bundle --platform ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/main.jsbundle

Dla mnie błąd polegał na braku komponentu PureRenderMixin. Do którego rozwiązanie można znaleźć tutaj: https://github.com/facebook/react-native/issues/13078 . Zasadniczo musisz ręcznie zainstalować reagować@16.0.0-alfa.3. Można to zrobić, uruchamiając to polecenie.

npm i --save [email protected]

Ten problem występuje obecnie dla wszystkich, ponieważ wydawane są nowsze wersje reagujących alf (szczególnie alpha.5) i łamią one kompilacje rodzime dla reagujących.

urbancvek
źródło
polecenie „zareaguj natywny pakiet - platforma ios --dev false --entry-file index.ios.js --bundle-output ./ios/release/main.jsbundle --assets-dest ./ios/release/ main.jsbundle 'opisuje każdy błąd w budowaniu pakietu. dopóki polecenie to nie powiedzie się, run-ios nie będzie działać
eric f.
mój obecny błąd polega na tym, że „@connect” z „React-redux” nie jest w jakiś sposób rozpoznawany?
eric f.
Może spróbuj dodać "plugins": ["transform-decorators-legacy"]do pliku .babelrc. Lub spróbuj z Connect HOC.
urbancvek
@urbancvek, dla mnie jest to błąd The node type SpreadProperty has been renamed to SpreadElementi jego @babelbiblioteka odwołań w środku node_modules, nie znalazłem niczego, co by to rozwiązało.
Daniel
7

Rozwiązanie -> npm startnastępnie otwórz nowy Terminal i przejdź do ścieżki projektu, a następnie wciśnij react-native run-iosgo, działa dla mnie

rahul.sapkal23
źródło
7

Co to dla mnie rozwiązało:

  • Otwórz okno terminala
  • cd w YOUR_PROJECT/ios
  • Usuń folder kompilacji za pomocą rm -r build
  • Uruchom react-native run-iosponownie

Alternatywnie możesz otworzyć Findera, przejść do folderu YOUR_PROJECT/iosi usunąć go build.

Następnie uruchom react-native run-iosponownie.

Źródło: Andrew Bancroft

l3aronsansgland
źródło
5

Jest to problem związany z rodzimą reakcją v0.42.1. Spróbuj zamknąć wszystkie instancje terminala i XCode i uruchom:

launchctl unload ~/Library/LaunchAgents/com.github.facebook.watchman.plist
watchman version
react-native run-ios
Shobhit Sharma
źródło
3
„Jest to problem związany z rodzimą reakcją v0.42.1.” - Istnieje również w wersji v.4.43.
dcp,
5

najpierw zamknij symulator, a następnie uruchom je na terminalu

npm install

react-native run-ios
Pramodya Abeysinghe
źródło
5

Wystarczy uruchomić w terminalu react-native start:

cd your react native app directory/ react-native start 

Uruchomi on program pakujący, teraz nie zamykaj tego okna terminala, w innym oknie terminala uruchom swój projekt. To jest jedyna potrzeba, aby znaleźć prawidłowe działanie.

Prakash Salawria
źródło
4

Znalazłem najłatwiejszy / najszybszy sposób na ominięcie tego: zamknięcie aplikacji w symulatorze (2 x Cmd + Shift + H) i ponowne uruchomienie.

Toby Flemming
źródło
4

Miałem ten sam problem. Ale moim problemem było to, że mój Mac i iPhone nie byli w tej samej sieci Wi-Fi.

Upewnij się, że wszystkie są w tej samej sieci, i przebuduj ponownie. Jeśli tak nie jest, wypróbuj rozwiązania wymienione przez innych członków tutaj.

Abraham Jagadeesh
źródło
3

sprawdź swoje sieciowe proxy, lepiej zamknij je.

lub powinieneś znaleźć inny sposób na utrzymanie serwera pakującego

użytkownik1684758
źródło
Dzięki, otworzyłem globalną sieć VPN, aby przekroczyć Wielki Mur Ogniowy!
BaiJiFeiLong
Wyłączyłem automatyczną konfigurację proxy na Macu. Działa po 2 dniach wysiłku: D ... Dzięki.
Nirav Jain,
Rzeczywiście prowadziłem VPN, którego nawet nie pamiętałem. zamknięcie go zadziałało!
Pedro Marques
3

Zdarzyło mi się to również po ponownym uruchomieniu komputera Mac. Po uruchomieniu aplikacji na symulatorze otwiera się okno terminalu Packager. Zamknąłem to okno i zakończyłem proces (zamknąłem również symulator), a następnie uruchom ponownie - uruchom-ios-native-run i wszystko działa dobrze.

gianni
źródło
3

W moim przypadku problem został rozwiązany przez ponowne uruchomienie adbserwera:adb kill-server && adb start-server

Grzegorz Pawlik
źródło
3

Ten problem zdarzył się również dla mnie ... Problem polegał na tym, że pakiet nie działał, wydawało się, że prawdopodobnie moja domyślna powłoka to Zsh. reagujące opony, aby otworzyć nowe okno terminala i uruchomić, .../node_modules/react-native/packager/launchPackager.commandale to nie zadziałało . Ręczne uruchomienie tego (i utrzymanie go) naprawiło to dla mnie.

Chris
źródło
3

sprawdź swój klucz „localhost” na stronie NSExceptionDomains w info.plist

jeśli nie istnieje, powoduje błąd.

ogelacinyc
źródło
2

Zakładając, że używasz nvmi zainstalowanych jest wiele wersji węzła, oto rozwiązanie:

  1. Powiedzieć, że prowadzony npm install -g react-native-cliwnode v6.9.5 .
  2. Teraz ustaw node v6.9.5jako domyślny, uruchamiającnvm alias default 6.9.5
  3. Teraz biegnij react-native run-ios

Problem polega na tym, że masz wiele wersji węzła zainstalowanych za pośrednictwem nvmi do zainstalowania react-native-cliprzełączyłeś lub zainstalowałeś najnowszą wersję węzła, który nie jest jeszcze oznaczony jako domyślny węzeł do wskazania nvm. Po uruchomieniu react-native run-iosotwiera się nowe okno terminala, w którym domyślnie nvmnie jest wskazana wersja węzła, w której został zainstalowany react-native-cli. Po prostu wykonaj powyższą konfigurację, mam nadzieję, że to powinno pomóc.

Syed
źródło
2

upewnij się, że masz .jsbundle w swoim projekcie

Dodaj

react-native bundle --dev false --entry-file index.js --bundle-output ios/main.jsbundle --platform ios

w swoim reakcyjnym natywnym kodzie spróbuj ponownie otworzyć projekt

Saloni Parikh
źródło
1

Pracuję z RN 0.49.5. Próbowałem wielu metod, ale nikt nie działa. W końcu to wypracowałem. To proste i łatwe.

Główną ideą jest, aby zmienić localhostsię 127.0.0.1, ale nie jest to gdzie RN powie. Jest w RCTBundleURLProvider.m # - (BOOL) jest hostem PackageRunning: (NSString *) .

Zmiany w kodzie: oc - NSString *host = ipGuess ?: @"localhost"; + NSString *host = ipGuess ?: @"127.0.0.1"; To jest poprawne dla symulatora. Jeśli jest to urządzenie, po prostu zmień adres IP na swój komputer.

Bruce Lee
źródło
Czy mógłbyś rozwinąć swoje rozwiązanie?
Ashish Singh Rawat
1

Kolejną rzeczą, która działa dla mnie, jest otwarcie projektu w xcode, a następnie wyczyszczenie go i zbudowanie. zwykle uruchamia ponownie serwer pakowania i rozwiązuje problem.

Eliran Goshen
źródło
1

Wykonaj poniższe polecenie:

killall -9 node
rm -rf ios/build
react-native run-ios

otworzy plik launchpackager.command, a aplikacja zostanie zainstalowana na symulatorze ios

Saif Siddiqui
źródło
0

Upewnij się, że launchPackage.commanddziałają w terminalu i spróbuj uruchomić ponownie. Zbuduje pakiet. To trochę jak webpack-dev-server.

Codler
źródło