React Niedopasowanie wersji natywnej


196

Otrzymuję następujący komunikat, gdy inicjuję nowy projekt, a następnie uruchamiam emulator Xcode:

Niezgodność wersji React-Native

Wersja Javascript 0.50.1 Wersja natywna: 0.50.0

Upewnij się, że odbudowałeś kod macierzysty. ...

Czy ktoś wie, co się tutaj dzieje i może mi pomóc?

Odpowiedzi:


340

Oto co z tym zrobiłem:

Zamknij wszystkie terminale i ponownie uruchom kompilację.

Możesz zapomnieć o zamknięciu terminala nodejs z innego projektu, a oni zainstalowali inną wersję reagowania.

Tak więc kod pobierany z serwera nodejs powoduje konflikt z rodzimym.


1
co jeśli nie chcę zamykać obecnie otwartych terminali (mam uruchomione aplikacje)? Czy istnieje inne obejście?
Dimitar Tsonev

1
@DimitarTsonev możesz po prostu zamknąć ten konkretny terminal otwarty przez reakcję-rodzimą, co pokazuje Bundling 'index.android.js' 100.0% (1/1), done.
Val

1
wymusza pełne wykorzystanie wersji zależności reakcji w build.gradledziałającym. dzięki @Val
jake oliver

Zamknięto wszystkie terminale i wykorzystano:react-native run-ios
Steffo Dimfelt

uruchom także, pod installjeśli używasz cocoapods.
Array

37

W przypadku, gdy utworzyłeś aplikację Reaktywuj natywną za pomocą aplikacji Utwórz Reaktywuj natywną. Powinieneś mieć app.json (expo). i plik package.json, sprawdź, czy wersje expo są zgodne i odpowiednio się zmień. Na przykład w moim przypadku problem polegał na tym, że w pliku app.json miałem wersję 25.0.0 dla atrybutu expo sdkVersion , zmieniam ją na 23.0.0 i wszystko działało.

package.json:

"dependencies": {
    "expo": "^23.0.4",
    "react": "16.0.0",
    "react-native": "^0.50.4"
  }

app.json:

{
  "expo": {
    "sdkVersion": "23.0.0" // before was 25.0.0
  }
}

To zadziałało dla mnie! Szybka aktualizacja: nie możesz użyć bezpośredniego modułu npm dla swojego pakietu native-reagującego, a zamiast tego masz tarballa. W takim przypadku możesz użyć statusu Reaktywny, aby zweryfikować swoją wersję RN. :)
blakeface

15

Po prostu przejdź do swojego, android/app/build.gradlea następnie dodaj do dependenciessekcji:

dependencies{
compile ("com.facebook.react:react-native:0.50.3") { force = true } 
}

/// reagującą wersję natywną można znaleźć w pliku package.json


5
gdzie mam zmienić na iOS
Anurag Shrivastava

jaka jest równoważna zmiana w package.json?
Nate Glenn

8

po prostu wymuś zareagowanie na wersję natywną w pliku ocen poziomu aplikacji na Androida, w dependenciessekcji.

compile ("com.facebook.react:react-native:0.52.0") { force = true }

pracował dla mnie


2
To zadziałało dla mnie. Mam 0,53,3. Dodałem siłę z 0.53.3, ponownie uruchomiłem terminale, pobiegłem npm start -- --reset-cachei pobiegłemreact-native run-android
Florin Dobre

6

Nigdy wcześniej nie widziałem tego błędu, ale ilekroć nie mogę sprawić, by Xcode i React-Native dobrze ze sobą grały, robię kilka rzeczy. Sprawdź, z jaką wersją Xcode pracuję. Jeśli trzeba go zaktualizować, aktualizuję go. Potem czyszczenie stróża i skrytka to drugie miejsce, do którego chodzę. Nie używam polecenia reset cache. Zawsze mówi, że muszę zweryfikować pamięć podręczną, więc pomijam to (możesz to zrobić, po prostu się mylę). Używam rm -rf $ TMPDIR / reaguj *, aby pozbyć się buforowanych kompilacji. Jeśli to nie zadziała, staram się zbudować aplikację w Xcode, a następnie zacząć od tego miejsca, aby zbudować ją z działającym w środowisku responsive run-ios. Po wyświetleniu tego komunikatu o błędzie możesz zacząć od zbudowania go za pomocą Xcode. Mam nadzieję, że to pomoże ... daj mi znać swoje postępy. Powodzenia! (Możesz także zaktualizować do RN 0.


Drugą rzeczą jest to, że bawiłem się z expo. Zastanawiam się, czy to wszystko popsuło
Sam Rao,

Możesz po prostu zainstalować npm install - save reag-native@0.51 Ale najpierw spróbuję zbudować go z Xcode. Zrobiłeś to już? Jeśli potrzebujesz pomocy, daj mi znać.
Jared Nelson,

6

Jeśli korzystasz z aplikacji React Native za pośrednictwem Expo, aktualizacja React Native może spowodować ten błąd (jak zauważono na https://github.com/expo/expo/issues/923 ).

Jeśli taki jest twój scenariusz, masz następujące opcje:

  1. Bump Expo (który jest wymieniony w twoim package.json) do wersji kompatybilnej z twoją wersją React Native ( jeśli taka istnieje, co może nie być prawdą - sądząc po powiązanym problemie, sądzę, że obsługa Expo śledzi wydania React Native).
  2. Odrzuć zmiany, usuń i ponownie zainstaluj moduły węzłów, Wysuń z Expo, a następnie (po sprawdzeniu, czy nadal możesz uruchomić aplikację po wyrzuceniu), spróbuj ponownie przeprowadzić aktualizację.

Expo obsługuje tylko reakcyjne natywne do 59,8 w momencie pisania. Kompatybilność z expo / reag -native patrz docs.expo.io/versions/latest/sdk/overview/#sdk-version (nie jest to dokładnie ta sama przyczyna błędu co OP, ale wydaje się istotna do odnotowania.)
Tijs Maas

6

Najdłużej miałem ten problem i żadne z powyższych rozwiązań nie pomogło. Byłem w trakcie uaktualniania programu native reagować w create-react-native-appprojekcie, dopóki nie dowiedziałem się, że nie wszystkie wersje Expo obsługują najnowszą wersję React Native.

Znalazłem link do tej strony w dokumentacji, która pokazuje, które kombinacje wersji React Native, React i Expo są oficjalnie obsługiwane:

Źródło: https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md

Edycja plików app.jsoni package.jsondopasowanie do odpowiednich wersji i uruchomienie npm installsprawiło, że wszystko znów działało.


6

Używam urządzenia fizycznego, w moim przypadku rozwiązało to problem:

  1. Odinstaluj aplikację
  2. lsof -i :8081
  3. kill -9 PID
  4. Odbuduj aplikację ( react-native run-androidlub react-native run-ios)

Po prostu zabicie wszystkich PID lsof -i :8081i przebudowanie zrobiło to dla mnie na iOS Simulator.
Ronan Boiteau

To samo tutaj - wypróbowałem Rimraf node_modules, npm start —reset-cache itp. - nic nie działało. Potem zrobiłem jak wyżej - odinstalowałem aplikację, użyłem taskkill / im node.exe i taskkill / f / PID (numer podany w ostatnim kroku, istniejącego PID), a następnie uruchomiłem natywny run-android. Działa uczta!
user1641906,

5

W swoim pliku build.gradle dodaj:

implementation ("com.facebook.react:react-native:0.51.0") {
    force = true;
}

zamień 0.51.0na wersję z pliku package.json


4

Dla programistów Androida, którzy nie mogli go naprawić po prostu zamykając i przebudowując, ręcznie odinstaluj aplikację na emulatorze / urządzeniu.


3
Odinstalowanie aplikacji z symulatora IOS działało dla mnie.
negative_zero

4

Spróbuj ponownie zainstalować zależności. To działało dla mnie

1.) yarn/npm install
2.)yarn/npm start --reset-cache


3

Dla mnie było to spowodowane react-nativewersją w dependencysekcji package.jsonpliku. To było:

"dependencies": {
"expo": "^27.0.1",
"react": "16.3.1",
"react-native": "~0.55.0"
}

Zorientowałem to:

"dependencies": {
"expo": "^27.0.1",
"react": "16.3.1",
"react-native": "0.52.0"
}

Teraz działa dobrze.


3

W moim przypadku mam do czynienia z tym na iOS i próbowałem zresetować i wyczyścić całą pamięć podręczną za pomocą poniższego polecenia, ale również nie powiodło się, pomimo wielu komentarzy, że główną przyczyną jest to, że program pakujący działa gdzieś przypadkowo, uruchomiłem ponownie mój Mac i problem nadal występował.

watchman watch-del-all && rm -rf node_modules/ && yarn cache clean && yarn install && yarn start --reset-cache

Rozwiązaniem jest, aby usunąć folder kompilacji @ /ios/build, a następnie wykonać react-native run-iosgo rozwiązać


3

Wypróbowałem powyższe rozwiązania, ale wydaje się, że dodanie tego do pliku AndroidManifest.xml to rozwiązało.

  android:usesCleartextTraffic="true"

1
Działa jak urok .. dlatego nigdy nie polubię Androida. Zawsze istnieje magiczne słowo, które rozwiązuje twoje problemy, które doprowadzały cię do szaleństwa przez wiele godzin.
picacode

2

Dla innych z tym samym problemem na iOS z CocoaPods:

Wypróbowałem wszystkie powyższe rozwiązania, bez powodzenia. Mam kilka pakietów z natywnymi zależnościami w moim projekcie, a niektóre z tych potrzebnych modułów pod są instalowane. Problem polegał na tym, że React został określony w moim Podfile, ale zasobnik React nie został automatycznie zaktualizowany przy użyciu react-native-git-upgrade.

Rozwiązaniem jest uaktualnienie wszystkich zainstalowanych modułów, poprzez uruchomienie cd ios && pod install.


2

W moim przypadku pomogło zainstalowanie nowego urządzenia wirtualnego. Teraz używam 1 urządzenia na aplikację.


2

Użytkownicy Expo - upewnij się, że app.jsonwersja SDK i package.jsonEXPO są (mogą być równe) kompatybilne ze sobą.


Dziękuję Ci! To było rozwiązanie dla nowego użytkownika wystawy.
Jasper Blues

1

Miałem również ten problem podczas korzystania z Expo i iOS Simulator. To, co zadziałało, to wymazanie symulatoraHardware > Erase All Content and Settings...


Jestem całkiem pewien, że można to osiągnąć po prostu odinstalowując aplikację Expo z emulatora. Nie ma potrzeby wszystkiego.
Ajay,

1

Możliwa poprawka:

  1. Usuń plik package-lock.json
  2. Biegać: watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf node_modules/&& npm install

Jeśli problem będzie się powtarzał, spróbuj wykonać projekt bezpośrednio z Xcode

To zadziałało dla mnie.


1

W moim przypadku (NIE używając expo i kompilacji Androida)

pakiet.json

"dependencies": {
    "react": "16.3.1",
    "react-native": "0.55.2"
}

I app.json

{
  "sdkVersion": "27"
}

rozwiązany problem


Jest to szczególnie ważne, jeśli używasz Expo. Sprawdź dokumentację aktualizacji Expo, aby uzyskać więcej informacji: docs.expo.io/versions/latest/workflow/…
blakeface

1

Próbowałem zbudować i uruchomić aplikację React Native z WebStorm i napotkałem ten problem. Prostym rozwiązaniem było dla mnie:

watchman watch-del-all

W systemie macOS, jeśli watchmannie jest jeszcze zainstalowany, zainstaluj go za pomocą Homebrew :

brew install watchman

1

Zdarza się to czasami, gdy próbujesz uruchomić bez zamykania serwera węzłów, na którym działała poprzednia aplikacja, więc spróbuj zrestartować React. Aby to zrobić, po prostu uruchom następujące polecenia:

1. To kill current processes
killall node -9 

2. To Start React  Native
react-native start 

3. Then Run android
react-native run-android

1

W moim przypadku zmieniłem expowersję ręcznie. Mam ten sam problem, ponieważ zapomniałem zaktualizować sdkVersion w app.json i babel-preset-expo w package.json

Po tym uruchomieniu: expo r -cwyczyść pamięć podręczną i uruchom aplikację.


1

Naprawiliśmy to, aby upewnić się, że zmienne ANDROID_HOME i PATH zostały skonfigurowane przed kompilacją.

Najpierw uruchom poniższe dwa polecenia, a następnie skompiluj aplikację dla urządzenia.

export ANDROID_HOME=/Users/username/MyFiles/applications/androidsdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools

1

Otrzymałem tę klasyfikację, gdy definicje typów TypeScript były niezgodne.

EG react-nativew 0.61.5 w dependenciesi @types/react-nativew 0.60.0 w devDependencies.

Gdy tylko zaktualizowałem devDependencies, zadziałało. Nie musiałem niczego restartować.


0

To nie jest poprawka, ale w moim przypadku miałem wiele aplikacji RN zainstalowanych na moim urządzeniu i nieświadomie próbowałem „przeładować” z niewłaściwej aplikacji. (W tej chwili tworzę jednocześnie dwie aplikacje). Upewnij się, że korzystasz z właściwej aplikacji!


0

Spróbuj zmienić wersję swojego Native-React podaną w pakiecie.json (w zależności od zależności - Reaktywuj-Native) na tę samą, co „Wersja Native” pokazana w komunikacie o błędzie. Następnie uruchom ponownie „npm install”.


jakiś pomysł, jak obniżyć wersję do wersji wymienionej w package.json?
HungrySoul

w pakiecie.json powinieneś zobaczyć coś w rodzaju „Reakcja-natywna”: „^ 0,55.0” w „Zależności”. Zmień ten numer (0,55.0 w tym przykładzie) na żądaną wersję i ponownie uruchom „npm install”.
Pnar Sbi Wer

0

Mam ten sam problem podczas tworzenia natywnej aplikacji reagującej na Androida i wykonałem następujące czynności, które zadziałały dla mnie.

„Wersja JavaScript 0.50.1” w konsoli błędów jest wersją rodzimą reagującą w twoim package.jsonpliku. Upewnij się, że jest to ta sama wersja co „Wersja natywna 0.50.0” w konsoli błędów.

  1. Zaktualizowałem wersję-reakcyjną natywną do „wersji natywnej 0.50.0” zgodnie z monitem w konsoli błędów.
  2. Odbuduj aplikację react-native run-android.


0

Opene projectdir / android / app / build.gradle

Próbować:

compile ("com.facebook.react: React-native: 0.51.0") {force = true}

Zamiast kompilować „com.facebook.react: reaktor-rodzimy: 0,51.0” {force = true}

Ref .: Link

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.