Obecnie przechodzę przez samouczki React-Native. Zacząłem od samouczka Getting Started, w którym stworzyłem nowy projekt natywny Reaguj i udało mi się uruchomić projekt na moim urządzeniu.
Następnie uruchomiłem samouczek dotyczący rekwizytów , skopiowałem fragment kodu i próbowałem ponownie uruchomić projekt, a na ekranie pojawił się następujący komunikat o błędzie:
Odpowiedzi:
Myślę, że jest to błąd spowodowany niedopasowaniem nazwy projektu i zarejestrowanego komponentu.
Zainicjowałeś projekt pod jedną nazwą, tj
react-native init AwesomeApp
Ale w pliku index.ios.js rejestrujesz inny komponent
AppRegistry.registerComponent('Bananas', () => Bananas);
Kiedy to musi być
AppRegistry.registerComponent('AwesomeApp', () => Bananas);
Spróbuj to naprawić.
źródło
moduleName:@"AwesemeApp"
linię w swoim pliku AppDelegate.mW większości przypadków problem polega na tym, że masz inny
react-native start
serwer (np. React Native Packager) działający albo na innym terminalu, albo na innej karcie TMUX (jeśli używasz TMUX).Musisz znaleźć ten proces i zamknąć go, więc po uruchomieniu
react-native run-ios
na przykład ustanowi nowy serwer pakujący, który zarejestrował się dla tej konkretnej aplikacji.Po prostu znajdź ten proces za pomocą:
znajdź identyfikator procesu (PID) i zabij proces programu pakującego za pomocą
kill
polecenia (npkill -9 [PID]
.). Powinieneś znaleźćlaunchPackager.command
aplikację w systemie macOS, nie mając pewności co do innych systemów operacyjnych.Następnie spróbuj ponownie uruchomić
run-ios
(lub Androida). Powinieneś być w stanie zobaczyć nową ścieżkę po uruchomieniu nowego serwera pakującego, np:źródło
react-native start --port <otherport>
, czy powinienem biecreact-native run-<platform>
inaczej ?, dziękistart
polecenie uruchamia serwer pakujący, więc jeśli już skompilowałeś swoją aplikację, nie ma potrzeby wykonywaniarun-<platform>
.Zmodyfikuj w
MainActivity
ten sposób,źródło
Moje rozwiązanie to zmiana nazwy modułu w „AppDelegate.m”
z
moduleName:@"AwesomeProject"
do
moduleName:@"YourNewProjectName"
źródło
Przede wszystkim musisz rozpocząć swoją aplikację:
Następnie musisz ustawić nazwę aplikacji jako pierwszy argument funkcji registerComponent.
To działa dobrze.
źródło
Sprawdź plik app.json w projekcie. jeśli nie ma linii appKey, musisz ją dodać
źródło
W moim przypadku jest ta linia w MainActivity.java, która została pominięta, gdy użyłem
react-native-rename
cli (z NPM)Oczywiście musisz zmienić jego nazwę na nazwę swojej aplikacji.
źródło
Myślę, że serwer węzłów działa z innego folderu. Więc zabij go i uruchom w bieżącym folderze.
Znajdź działający serwer węzłów: -
lsof -i :8081
Zabij działający serwer węzłów: -
kill -9 <PID>
Na przykład:-
kill -9 1653
Uruchom serwer węzła z bieżącego folderu macierzystego reagowania: -
react-native run-android
źródło
Miałem ten sam problem i dla mnie główną przyczyną było to, że uruchomiłem (start natywny) program pakujący z innego folderu natywnego reagowania (AwesomeApp), podczas gdy utworzyłem inny projekt w innym folderze.
Uruchomienie programu pakującego z katalogu nowej aplikacji rozwiązało problem.
źródło
Może to być również spowodowane tym, że nazwa komponentu głównego zaczyna się od małych liter.
Popraw go, a raczej utwórz projekt jeszcze raz z nazwą PascalCase.
np. zapalić nowy HelloWord
źródło
Wszystkie podane odpowiedzi mi nie pomogły.
Miałem inny proces węzłowy działający na innym terminalu, zamknąłem ten terminal poleceń i wszystko działało zgodnie z oczekiwaniami.
źródło
musisz zarejestrować go w index.android.js / index.ios.js
lubię to:
źródło
Rozwiązałem ten problem, zmieniając następujące elementy w pliku app.json. Wygląda na to, że duża litera rzuca ten błąd.
Z:
Do:
źródło
Zamiast zmieniać nazwę w
AppRegistry
,Uruchom responsywny init Bananas, utworzy to standardowy kod dla projektu Bananas i
AppRegistry.registerComponent
automatycznie wskaże bananyźródło
Żadne z rozwiązań nie zadziałało dla mnie. Musiałem zabić następujący proces i ponownie uruchomić responsywny run-android i zadziałało.
node ./local-cli/cli.js start
źródło
Miałem ten sam problem. Używałem systemu Windows do tworzenia natywnej aplikacji na Androida i miałem ten sam błąd. Oto, co zadziałało.
Zapisz i uruchom aplikację normalnie. To zadziałało dla mnie.
źródło
Problem pojawi się również, gdy w pliku index.js nazwa aplikacji różni się od nazwy, którą nadałeś jej pakietowi dla systemu Android / ios ; prawdopodobnie stało się tak po wyrzuceniu aplikacji. Więc upewnij się, że podczas wywoływania
AppRegistry.registerComponent('someappname', () => App)
someappname jest również używane dla pakietów natywnych lub odwrotnie.źródło
Dowiedziałem się, gdzie był problem w moim przypadku (system operacyjny Windows 10), ale może to również pomóc w Linuksie (możesz spróbować).
W
windows power shell
przypadku, gdy chcesz uruchomić aplikację (pierwszy raz po uruchomieniu komputera), wykonując następujące polecenie,Zaczyna się
node process/JS server
w innymconsole panel
i nie napotkasz tego błędu. Ale, jeśli chcesz uruchomić inną aplikację , to musi trzeba zamknąć , które już działaJS server console panel
. Następnie wykonaj to samo polecenie dla innej aplikacji zpower shell
, to polecenie automatycznie uruchomi kolejny nowy serwer JS dla tej aplikacji i nie napotkasz tego błędu.Nie musisz zamykać i ponownie otwierać,
power shell
aby uruchomić inną aplikację, musisz zamknąć,node console
aby uruchomić inną aplikację.źródło
Po przeczytaniu wszystkiego powyżej stwierdziłem, że może być inny powód.
W moim przypadku:
react-native-cli: 2.0.1
natywny: 0,60,4
i następującą strukturę:
Po pierwsze należy zauważyć, że index.android nie jest aktualizowany w Android Studio, gdy kompilacja jest uruchamiana przez Metro builder (react-native run-android), więc trzeba to zrobić ręcznie. Również w Android Studio nie "czyta"
app.json (utworzony domyślnie razem z index.js, którego nazwa została zmieniona na index.android.js):
i tak to lubię
(w moim przypadku)
powodują, że android studio nie wie, do czego odwołuje się authApp. Naprawiłem na chwilę odwołanie do nazwy aplikacji z jej nazwą w postaci ciągu znaków i nie używanie tego importu z app.json:
źródło
To rozwiązało to dla mnie
Więc moja
index.js
teczkaI mój
package.json
plik:źródło
To rozwiązanie zadziałało u mnie po 2 dniach debugowania. Zmień to :
do
źródło