react-native run-android
polecenie kończy się, pozostawiając wiadomość w symulatorze systemu Android. Wiadomość jest następująca:
Nie można załadować skryptu. Upewnij się, że masz uruchomiony serwer Metro lub że pakiet „index.android.bundle” jest prawidłowo zapakowany do wydania.
Co ja robię źle?
reactjs
react-native
react-native-android
react-native-cli
metro-bundler
Belle Solutions
źródło
źródło
Odpowiedzi:
Nie uruchomiłeś jeszcze pakietu. Uruchom wcześniej
npm start
lubreact-native start
w katalogu głównym projektureact-native run-android
.źródło
Te kroki naprawdę mi pomagają:
Krok 1: Utwórz katalog w android / app / src / main / asset
Polecenie Linux :
mkdir android/app/src/main/assets
Krok 2: Zmień nazwę
index.android.js
(w katalogu głównym) naindex.js
( Może istniejeindex.js
plik, w takim przypadku nie musisz zmieniać jego nazwy ), a następnie uruchom następujące polecenie:Krok 3: Utwórz plik APK:
react-native run-android
Użyj pliku index.js w najnowszej wersji.
Cieszyć się :)
źródło
index.js
w katalogu głównym znajduje się plik. W takim przypadku nie musisz zmieniać jego nazwyU mnie ten błąd był spowodowany aktualizacją React-native
Jeśli sprawdzasz różnicę aktualizacji, musisz utworzyć manifest debugowania
android/app/src/debug/AndroidManifest.xml
Więcej informacji można znaleźć pod adresem : https://stackoverflow.com/a/50834600/1713216
https://react-native-community.github.io/upgrade-helper/
źródło
android:usesCleartextTraffic="true"
w głównym,AndroidManifest.xml
czy to działa?Najpierw wykonaj kroki 4 i 5, a następnie uruchom swój projekt. Jeśli nie otrzymasz wyniku (z krokami 4 i 5), wykonaj następujące czynności
1- Spróbuj obniżyć wersję Node (aktualna wersja to
12.13.1
)2- Dodaj ścieżkę modułu npm (
C:\Users\your user name\AppData\Roaming\npm
) do zmiennych systemowych zamiast zmiennych użytkownika3- Zainstaluj reaguj natywnie globalnie za pomocą polecenia
4- Przejdź do katalogu głównego swojego projektu i uruchom następujące polecenie:
5- Otwórz inny terminal w katalogu głównym projektu i uruchom następujące polecenie:
EDYTOWAĆ :
Używasz Genymotion? Jeśli tak, wykonaj następujący krok:
Po wykonaniu powyższego kroku, jeśli pojawi się następujący błąd?
Otwórz swoje genymotion i przejdź do:
genymotion menu -> Settings -> ADB -> Następnie wybierz use custom android sdk tools(kliknij przycisk przeglądania, aby znaleźć lokalizację sdk)
Na koniec ponownie uruchom projekt.
źródło
Możesz spróbować następujących rzeczy:
Dodaj tę linię do pliku AndroidManifest.xml
źródło
Podobny problem wydarzył się ze mną.
Najwyraźniej Mcafee blokuje port 8081. Zajęło mi to godziny, zanim to rozgryzłem.
Spróbuj biegać:
Gdy aplikacja wyświetla się z błędem na emulatorze, przejdź do ustawień programistycznych ( Ctrl+ M).
Zmień „Host serwera debugowania i port dla urządzenia” na „localhost: 1234”.
Zamknij aplikację i uruchom ją z szuflady aplikacji.
źródło
po prostu dodaj trzy splash w: node_modules \ metro-config \ src \ defaults \ blacklist.js
wymienić tę część:
źródło
jeśli masz wszystko poprawnie skonfigurowane, spróbuj tego:
adb reverse tcp: 8081 tcp: 8081
Czemu? „Gdy program pakujący RN jest uruchomiony, w przeglądarce dostępny jest aktywny serwer WWW pod adresem 127.0.0.1:8081. To z tego serwera jest udostępniany pakiet JS dla Twojej aplikacji i odświeżany w miarę wprowadzania zmian. Bez odwrotnego proxy, Twój telefon nie mógłby połączyć się z tym adresem ”.
wszystkie kredyty dla Swingline0
źródło
[Szybka odpowiedź]
Po próbie rozwiązania tego problemu w moim obszarze roboczym znalazłem rozwiązanie.
Ten błąd jest spowodowany problemem z Metro używającym niektórych kombinacji wersji NPM i Node.
Masz 2 możliwości:
Alternatywa 2: Przejdź do tego pliku:
\node_modules\metro-config\src\defaults\blacklist.js
i zmień ten kod:i zmień na to:
źródło
To zadziałało dla mnie po wypróbowaniu kilku sposobów.
W pliku
node_modules\metro-config\src\defaults\blacklist.js
Zastąpić :
z :
mam nadzieję że to pomoże.
źródło
metro-config
użyto \ dla ścieżek zamiast /, co sugeruje ta odpowiedź. Nie rób tego . Modyfikowanie pakietów npm oznacza, że cały zespół musi to robić na swoim komputerze, w CI, podczas przemieszczania, w środowisku produkcyjnym i za każdym razem, gdy metro-config wydaje aktualizację. Lepszym podejściem jest rozwidlenie metro-config na GitHub, zatwierdzenie poprawki, wypchnięcie i przesłanie PR, aby naprawić to dla wszystkich.Począwszy od systemu Android 9,0 (poziom interfejsu API 28), obsługa tekstu jawnego jest domyślnie wyłączona.
Oto, co musisz zrobić, aby pozbyć się tego problemu, jeśli poprawnie wykonujesz normalne polecenia uruchamiania
I zmodyfikuj swój plik manifestu Androida w ten sposób.
źródło
Po godzinach szukanie odpowiedzi. Rozwiązaniem było utworzenie węzła downgrade do wersji 12.4.
W moim przypadku zdaję sobie sprawę, że błąd występuje właśnie w wersji natywnej 0.60 reaguje z wersją węzła 12.6.
źródło
Moje rozwiązanie jest następujące:
Uruchom serwer Metro
Uruchom Androida
Jeśli zobaczysz błąd mówiący „port 8081 jest już używany”, możesz zakończyć ten proces i uruchomić go ponownie
Zobacz stronę rozwiązywania problemów z React Native .
źródło
Jeśli korzystasz z systemu Linux, otwórz terminal z katalogu głównego aplikacji i uruchom
następnie otwórz kolejne okno terminala i uruchom:
źródło
Chcę tylko dodać nieoczywistą możliwość, której tutaj nie omówiono. Do wykrywania zmian w sieci, głównie stanu sieci, używam @reak-native-community / netinfo . Aby przetestować stan wyłączonej sieci, należy wyłączyć przełącznik WIFI (na emulatorze). To również skutecznie odcina most między emulatorem a środowiskiem debugowania. Po testach nie włączyłem ponownie WIFI, ponieważ byłem z dala od komputera i natychmiast o nim zapomniałem, gdy wróciłem.
Istnieje możliwość, że może to dotyczyć również kogoś innego i warto to sprawdzić przed podjęciem jakichkolwiek innych drastycznych kroków.
źródło
Miałem ten sam problem, problem dla mnie polegał na tym, że adb nie znajdował się na właściwej ścieżce środowiska, błąd mówi ci o porcie metra, gdy jesteś w adb, porty są zabijane i restartowane.
Dodaj zmienną środowiskową (ADB)
Uruchom ponownie kompilację Androida
Lub
źródło
Ja też miałem do czynienia z tym problemem. Rozwiązałem ten kolejny krok.
Sprawdź ścieżkę SDK systemu Android w środowisku Veritable.
Dodaj
ANDROID_HOME = C:\Users\user_name\AppData\Local\Android\Sdk
w zmiennej systemoweji
C:\Users\user_name\AppData\Local\Android\Sdk\platform-tools
ścieżki w zmiennej systemowejzastąp sharedBlacklist, jak poniżej segmentu kodu,
w node_modules / metro-config / src / default / blacklist.js
Następnie uruchom npx React-native run-android --port 9001
Miłego kodowania…!
źródło
Doświadczyłem tego tylko dlatego, że moje Wifi zostało omyłkowo wyłączone na moim emulatorze. Włączyłem go z powrotem i zaczęło działać dobrze. Mam nadzieję, że to komuś pomoże
źródło
Rozwiązanie, które zadziałało dla mnie, jest następujące:
źródło
zaktualizuj tę część na czarnej liście metra
źródło
Napotkałem ten sam problem podczas korzystania z samouczka React Native (programowanie w systemie Linux i kierowanie na Androida).
Ten problem pomógł mi rozwiązać problem w kolejnych krokach. Uruchom następujące polecenia w poniższej kolejności:
mkdir android/app/src/main/assets
react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
react-native run-android
Możesz zautomatyzować powyższe kroki, umieszczając je
scripts
częściowo wpackage.json
ten sposób:Następnie możesz po prostu wykonać za
npm run android-linux
każdym razem z linii poleceń.źródło
Domyślnie mały serwer JavaScript o nazwie „Metro Server” działa na porcie 8081.
Musisz udostępnić ten port, aby ten serwer mógł się uruchomić. Więc,
Jak zwolnić port?
http://tenbull.blogspot.com/2019/05/how-to-kill-process-currently-using.html
Jak zabić proces aktualnie używający portu na hoście lokalnym w systemie Windows?
i co najważniejsze, zaktualizowałem wersję mojego węzła z 8.x do 10.x (najnowsza), zgodnie z sugestią facebook @ https://facebook.github.io/react-native/docs/getting-started
źródło
Dla mnie ten problem zaczął się od aktualizacji React-Native. Aktualizacja była konieczna, aby dodać obsługę 64-bitową.
Ponadto jedna ważna zmiana, którą wprowadziłem podczas aktualizacji, była w ../android/build/build.gradle
Musiałem zmienić targetSdkVersion z 27 na 28 po ostrzeżeniu, kiedy próbowałem załadować kompilację (.apk) do konsoli Google Play. Nie zdawałem sobie sprawy, że to była główna przyczyna powyższego błędu. Natychmiastowe odpowiedzi udzielone przez @tom i @tinmarfrutos miały absolutny sens.
Rozwiązałem problem, dodając android: usesCleartextTraffic = "true" do mojego android / app / src / debug / AndroidManifest.xml
źródło
W moim przypadku ustawiłem proxy w moim emulatorze. Po usunięciu tego serwera proxy działa z powrotem do normy.
źródło
możliwość tego błędu to także zła ścieżka, sprawdź raz
źródło
WAŻNE - możesz mieć wiele urządzeń wirtualnych w swoim środowisku. Upewnij się, że zmieniasz AVD, powtórz ustawienie ponownie.
INFORMACJE O DEBUGIU-
Jeśli masz powyższy błąd, musisz najpierw sprawdzić, co działa na porcie 8081
Najszybszym sposobem znalezienia tego jest użycie następującego polecenia w terminalu
jeśli coś ci pokazuje, oznacza to, że port jest zablokowany. jeśli to możliwe, odblokuj ten port.
W przeciwnym razie musisz zmienić port. Proces, który należy wykonać, został już wspomniany w powyższym komentarzu przez Naveena Kumara
Upewnij się, że 9001 również nie jest używany :)
źródło
Spróbuj wykonać poniższe czynności, jeśli wypróbowałeś wszystkie wymienione powyżej rozwiązania:
źródło
Spróbuj wykonać następujące czynności.
Może po poprzednich krokach masz wykonania npm start - --reset-cache
Pracuję, mam nadzieję, że ci to pomoże.
źródło
Jeśli korzystasz z systemu operacyjnego Linux, może się zdarzyć, że zdalny serwer npm nie działa. Otwórz inny terminal (z katalogiem projektu) i uruchom to polecenie sudo npm start lub sudo act-native start przed wykonaniem sudo act-native run-android
źródło
Komunikat o błędzie w emulatorze jest trochę mylący. W moim przypadku użyłem Macbooka. Musiałem zmienić uprawnienia w systemie Android / gradlew, uruchamiając
$ chmod 755 ./gradlew
, a następnie można było zbudować aplikację i wdrożyć ją na emulatorze Androida.źródło