Reagieren Sie auf die Nichtübereinstimmung der nativen Version

196

Die folgende Meldung wird angezeigt, wenn ich ein neues Projekt initiiere und dann den Xcode-Emulator starte:

React-Native Version Mismatch

Javascript Version 0.50.1 Native Version: 0.50.0

Stellen Sie sicher, dass Sie den nativen Code neu erstellt haben. ...

Weiß jemand was hier los ist und kann mir helfen?

Sam Rao
quelle

Antworten:

337

Das habe ich damit gemacht:

Schließen Sie alle Terminals und führen Sie den Build erneut aus.

Möglicherweise vergessen Sie, das Terminal von nodejs aus einem anderen Projekt zu schließen, und es wurde zufällig eine andere Reaktionsversion installiert.

Der Code, der vom Server von nodejs abgerufen wird, steht also in Konflikt mit dem nativen.

Val
quelle
1
Was ist, wenn ich meine aktuell geöffneten Terminals nicht schließen möchte (dort laufen Apps)? Gibt es eine andere Problemumgehung?
Dimitar Tsonev
1
@DimitarTsonev Sie können einfach das bestimmte Terminal schließen, das von react-native geöffnet wurde Bundling 'index.android.js' 100.0% (1/1), done.
Val
1
Erzwinge die vollständige Verwendung der React Dependency-Version in build.gradleArbeit. danke @Val
Jake Oliver
Alle Terminals geschlossen und benutzt:react-native run-ios
Steffo Dimfelt
Laufen pod installSie auch, wenn Sie Cocoapods verwenden.
Array
37

Falls Sie Ihre React-Native-App mit der Create-React-Native-App erstellt haben. Sie sollten eine app.json (expo) haben. Überprüfen Sie in einer Datei package.json, ob die Expo-Versionen übereinstimmen, und ändern Sie sie entsprechend. In meinem Fall bestand das Problem beispielsweise darin, dass ich in der Datei app.json eine Version 25.0.0 für das Attribut expo sdkVersion hatte. Ich ändere diese in 23.0.0 und alles funktionierte.

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
  }
}
Victoryoalli
quelle
Das hat bei mir funktioniert! Schnelles Update: Sie verwenden möglicherweise kein direktes npm-Modul für Ihr reaktionsnatives Paket und haben stattdessen einen Tarball. In diesem Fall können Sie den reaktionsnativen Status verwenden, um Ihre RN-Version zu überprüfen. :)
Blakeface
15

Gehen Sie einfach zu Ihrem android/app/build.gradleund fügen Sie dann dem dependenciesAbschnitt hinzu:

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

/// Die native Native-Version finden Sie in package.json

kunal pal
quelle
5
wo wechsle ich für ios
Anurag Shrivastava
Was ist die entsprechende Änderung in package.json?
Nate Glenn
8

Erzwinge einfach die Reaktion der nativen Version in der Gradle-Datei auf App-Ebene deines Android im dependenciesAbschnitt.

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

arbeitete für mich

Shubham Goel
quelle
2
Das hat bei mir funktioniert. Ich habe 0,53,3. Ich fügte eine Kraft mit 0,53,3 hinzu, startete Terminals neu, lief npm start -- --reset-cacheund liefreact-native run-android
Florin Dobre
6

Ich habe diesen Fehler noch nie gesehen, aber wenn ich Xcode und React-Native nicht dazu bringen kann, gut zusammen zu spielen, mache ich ein paar Dinge. Überprüfen Sie, mit welcher Version von Xcode ich arbeite. Wenn es aktualisiert werden muss, aktualisiere ich es. Dann ist das Löschen des Wachmanns und des Caches der zweite Ort, an den ich gehe. Ich verwende den Befehl zum Zurücksetzen des Cache nicht. Es heißt immer, dass ich den Cache überprüfen muss, also überspringe ich das (Sie können es aber tun, ich werde nur verwirrt). Ich benutze rm -rf $ TMPDIR / react- *, um zwischengespeicherte Builds zu entfernen. Wenn das nicht funktioniert, versuche ich, die App in Xcode zu erstellen, und arbeite mich dann von dort aus vor, um sie mit reaktionsnativen Run-Ios zu erstellen. Mit dieser Fehlermeldung scheinen Sie zunächst zu versuchen, sie mit Xcode zu erstellen. Hoffe das hilft ... lass mich wissen, wie weit du damit gekommen bist. Viel Glück! (Sie können auch auf RN 0 aktualisieren.

Jared Nelson
quelle
Die andere Sache ist, dass ich mit der Expo herumgespielt habe. Ich frage mich, ob das die Dinge durcheinander gebracht hat
Sam Rao
Sie könnten einfach npm installieren - speichern Sie [email protected]. Aber ich würde versuchen, es zuerst mit Xcode zu erstellen. Hast du das schon gemacht? Wenn Sie Hilfe benötigen, lassen Sie es mich wissen.
Jared Nelson
6

Wenn Sie Ihre React Native-App über Expo ausführen, kann ein Upgrade von React Native diesen Fehler verursachen (siehe https://github.com/expo/expo/issues/923 ).

Wenn dies Ihr Szenario ist, haben Sie folgende Möglichkeiten:

  1. Bump Expo (das in Ihrer Liste aufgeführt ist package.json) auf eine Version, die mit Ihrer React Native-Version kompatibel ist ( falls vorhanden, was möglicherweise nicht der Fall ist - gemessen am verknüpften Problem, denke ich, dass die Expo-Unterstützung die React Native-Versionen verfolgt).
  2. Verwerfen Sie Ihre Änderungen, löschen Sie Ihre Node-Module und installieren Sie sie erneut, werfen Sie sie von der Expo aus und versuchen Sie dann (nachdem Sie überprüft haben, ob Sie Ihre App nach dem Auswerfen noch ausführen können) Ihr Upgrade erneut.
Mark Amery
quelle
Expo unterstützt zum Zeitpunkt des Schreibens nur React-Native bis zu 59,8. Informationen zur Kompatibilität von Expo und React -Native finden Sie unter docs.expo.io/versions/latest/sdk/overview/#sdk-version (dies ist nicht genau die gleiche Fehlerursache wie beim OP, scheint jedoch relevant zu sein.)
Tijs Maas
6

Ich hatte dieses Problem am längsten und keine der oben genannten Lösungen half. Ich war gerade create-react-native-appdabei, React Native in einem Projekt zu aktualisieren, bis ich herausfand, dass nicht alle Versionen von Expo das neueste React Native unterstützen.

Diese Seite wurde in der Dokumentation verlinkt, die zeigt, welche Versionskombinationen von React Native, React und Expo offiziell unterstützt werden:

Quelle: https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md

Durch Bearbeiten der app.jsonund package.json-Dateien entsprechend den entsprechenden Versionen und Ausführen npm installfunktionierte alles wieder.

Yatit Thakker
quelle
6

Ich benutze ein physisches Gerät. In meinem Fall hat dies das Problem gelöst:

  1. Deinstallieren Sie die App
  2. lsof -i :8081
  3. kill -9 PID
  4. Erstellen Sie die App neu ( react-native run-androidoder react-native run-ios)
ade_anugerah
quelle
Das einfache Abschalten aller PIDs lsof -i :8081und das Wiederherstellen haben es für mich in iOS Simulator getan.
Ronan Boiteau
Das gleiche hier - Rimraf node_modules ausprobiert, npm start - Reset-Cache usw. - nichts hat funktioniert. Dann habe ich wie oben beschrieben - App deinstalliert, taskkill / im node.exe und taskkill / f / PID (im letzten Schritt angegebene Nummer der vorhandenen PID) verwendet und dann den nativen Run-Android reagiert. Arbeitete ein Vergnügen!
user1641906
5

Fügen Sie in Ihrer build.gradle-Datei Folgendes hinzu

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

Ersetzen Sie 0.51.0durch die Version in Ihrer package.json

Nitish Phanse
quelle
4

Für Android-Entwickler, die das Problem nicht durch Schließen und erneutes Erstellen beheben konnten, deinstallieren Sie die App manuell auf dem Emulator / Gerät.

Nadun Liyanage
quelle
3
Die Deinstallation der App vom IOS-Simulator hat bei mir funktioniert.
negative_zero
4

Versuchen Sie erneut, die Abhängigkeiten zu installieren. Das hat bei mir funktioniert-

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

Aditi
quelle
3

Für mich war es auf Grund react-nativeVersion in dependencyAbschnitt package.jsonDatei. Es war:

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

Ich habe es geändert zu:

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

Jetzt funktioniert es gut.

Seyed Morteza Mousavi
quelle
3

In meinem Fall habe ich es mit iOS zu tun, und ich habe versucht, den gesamten Cache mit dem folgenden Befehl zurückzusetzen und zu löschen, bin aber auch fehlgeschlagen, obwohl viele Kommentare besagen, dass die Hauptursache darin besteht, dass irgendwo versehentlich ein React Packager ausgeführt wird. Ich habe neu gestartet Mein Mac und das Problem blieben weiterhin bestehen.

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

Die Lösung besteht darin, den Build-Ordner @ zu löschen /ios/buildund dann react-native run-iosgelöst auszuführen

Isaac
quelle
3

Ich habe die oben genannten Lösungen ausprobiert, aber das Hinzufügen zu AndroidManifest.xml scheint das Problem zu beheben.

  android:usesCleartextTraffic="true"
ketimaBU
quelle
1
Es hat wie ein Zauber funktioniert. Dies ist der Grund, warum ich Android niemals mögen werde. Es gibt immer ein Zauberwort, das Ihre Probleme löst, die Sie viele Stunden lang verrückt gemacht haben.
Picacode
2

Für andere mit dem gleichen Problem unter iOS mit CocoaPods:

Ich habe alle oben genannten Lösungen ohne Glück ausprobiert. Ich habe einige Pakete mit nativen Abhängigkeiten in meinem Projekt und einige der benötigten Pod-Module werden installiert. Das Problem war, dass React in meiner Poddatei angegeben wurde, der React-Pod jedoch nicht automatisch mithilfe von aktualisiert wurde react-native-git-upgrade.

Das Update besteht darin, alle installierten Pods durch Ausführen zu aktualisieren cd ios && pod install.

brkn
quelle
2

In meinem Fall hat die Installation eines neuen virtuellen Geräts geholfen. Jetzt benutze ich 1 Gerät pro App.

Luminita Balas
quelle
2

Expo-Benutzer - app.jsonStellen Sie sicher, dass Ihre SDK-Version und Ihre package.jsonExpo-Version miteinander kompatibel sind (möglicherweise gleich sind).

Cherankrish
quelle
Danke dir! Dies war die Lösung für einen neuen Expo-Benutzer.
Jasper Blues
1

Ich hatte auch dieses Problem mit Expo und iOS Simulator. Was für mich funktioniert hat, war das Löschen des Simulators inHardware > Erase All Content and Settings...

catico
quelle
Ich bin mir ziemlich sicher, dass dies durch einfaches Deinstallieren der Expo-App vom Emulator erreicht werden kann. Keine Notwendigkeit für alles.
Ajay
1

Mögliche Lösung:

  1. Löschen Sie die package-lock.json
  2. Lauf: watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf node_modules/&& npm install

Wenn das Problem weiterhin besteht, versuchen Sie, das Projekt direkt vom Xcode aus auszuführen

Das hat bei mir funktioniert.

Alejo
quelle
1

In meinem Fall (NICHT mit Expo & Android Build)

package.json

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

Und app.json

{
  "sdkVersion": "27"
}

Das Problem wurde behoben

Ajitsen
quelle
Dies gilt insbesondere dann, wenn Sie Expo verwenden. Weitere Informationen finden Sie in
blakeface
1

Ich habe versucht, eine React Native-App aus WebStorm zu erstellen und auszuführen, und bin auf dieses Problem gestoßen. Die einfache Lösung für mich war:

watchman watch-del-all

Wenn watchmanes unter macOS noch nicht installiert ist, installieren Sie es mit Homebrew :

brew install watchman
friederbluemle
quelle
1

Es kommt manchmal vor, dass Sie versuchen, die Datei auszuführen, ohne den Knotenserver zu schließen, auf dem die vorherige App ausgeführt wurde. Starten Sie daher React neu. Führen Sie dazu einfach die folgenden Befehle aus:

1. To kill current processes
killall node -9 

2. To Start React  Native
react-native start 

3. Then Run android
react-native run-android
civani mahida
quelle
1

In meinem Fall habe ich die expoVersion manuell geändert . Ich habe das gleiche Problem, weil ich vergessen habe, sdkVersion in app.json und babel- preset -expo in package.json zu aktualisieren

Nach diesem Lauf: expo r -cum den Cache zu leeren und die App zu starten.

Giang Phan
quelle
1

Wir haben sichergestellt, dass die Variablen ANDROID_HOME und PATH vor dem Build eingerichtet wurden.

Führen Sie zuerst die folgenden zwei Befehle aus und erstellen Sie dann die App für das Gerät.

export ANDROID_HOME=/Users/username/MyFiles/applications/androidsdk
export PATH=$PATH:$ANDROID_HOME/tools:$ANDROID_HOME/platform-tools
Saif Kamaal
quelle
1

Ich habe diese Klassifizierung erhalten, wenn die TypeScript-Typdefinitionen nicht übereinstimmen.

EG react-nativebei 0,61,5 Zoll dependenciesund @types/react-nativebei 0,60,0 ZolldevDependencies .

Sobald ich devDependencies aktualisiert habe, hat es funktioniert. Musste nichts neu starten.

Thomas Hagström
quelle
0

Dies ist kein Fix, aber in meinem Fall waren mehrere RN-Apps auf meinem Gerät installiert, und ich habe unwissentlich versucht, aus der falschen Anwendung heraus neu zu laden. (Ich entwickle gerade zwei Apps gleichzeitig.) Stellen Sie also sicher, dass Sie in der richtigen Anwendung sind!

Freundlicher Roboter
quelle
0

Versuchen Sie, die in Ihrem package.json angegebene Version Ihres React-Native (unter Abhängigkeiten - React-Native) in die in der Fehlermeldung angegebene 'Native Version' zu ändern. Führen Sie dann erneut 'npm install' aus.

Pnar Sbi Wer
quelle
Haben Sie eine Idee, wie Sie ein Downgrade auf die in package.json angegebene Version durchführen können?
HungrySoul
In Ihrer package.json sollte unter "Abhängigkeiten" so etwas wie "react-native" angezeigt werden: "^ 0.55.0". Ändern Sie diese Nummer (in diesem Beispiel 0,55,0) in die gewünschte Version und führen Sie "npm install" erneut aus.
Pnar Sbi Wer
0

Ich habe das gleiche Problem beim Erstellen meiner reaktiven nativen App für Android und ich habe Folgendes getan, was für mich funktioniert hat.

Die "JavaScript-Version 0.50.1" in der Fehlerkonsole ist die reaktionsnative Version in Ihrer package.jsonDatei. Stellen Sie sicher, dass es sich um dieselbe Version wie "Native Version 0.50.0" in der Fehlerkonsole handelt.

  1. Ich habe die reaktionsnative Version auf die "native Version 0.50.0" aktualisiert, wie in der Fehlerkonsole angegeben.
  2. Erstellen Sie die App neu react-native run-android.
Anand Yadav
quelle
0

Stellen Sie außerdem sicher, dass das WLAN in Ihrem Emulator aktiviert ist

G. Adnane
quelle
0

Öffnen Sie projectdir / android / app / build.gradle

Versuchen:

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

Anstatt "com.facebook.react: react-native: 0.51.0" zu kompilieren {force = true}

Ref.: Link

Khurshid Ansari
quelle