Mancata corrispondenza della versione nativa di React


197

Ricevi il seguente messaggio quando avvio un nuovo progetto e quindi lancio l'emulatore Xcode:

Mancata corrispondenza della versione React-Native

Versione Javascript 0.50.1 Versione nativa: 0.50.0

Assicurati di aver ricostruito il codice nativo. ...

Qualcuno sa cosa sta succedendo qui e mi può aiutare?

Risposte:


341

Questo è quello che ho fatto con esso:

Chiudi tutti i terminali ed esegui nuovamente build.

Potresti dimenticare di chiudere il terminale nodejs da un altro progetto e potrebbero aver installato versioni di reazione diverse.

Quindi il codice recuperato dal server nodejs è in conflitto con quello nativo.


1
cosa succede se non desidero chiudere i miei terminali attualmente aperti (ho app in esecuzione lì)? C'è un'altra soluzione?
Dimitar Tsonev,

1
@DimitarTsonev puoi semplicemente chiudere quel terminale specifico aperto da reattivo-nativo, che mostra Bundling 'index.android.js' 100.0% (1/1), done.
Val

1
forzare completamente utilizzando la versione di dipendenza reattiva in build.gradlelavorato. grazie @Val
jake oliver,

Chiuso tutti i terminal e utilizzato:react-native run-ios
Steffo Dimfelt l'

esegui anche pod installse stai usando cocoapods.
Matrice

36

Nel caso in cui tu abbia creato la tua app Reazione-nativa usando crea-Reazione-nativa-app. Dovresti avere un app.json (expo). e un file package.json, controlla se le versioni di expo corrispondono e cambiano di conseguenza. Ad esempio, nel mio caso il problema era che nel file app.json avevo una versione 25.0.0 per l' attributo expo sdkVersion , lo cambio in 23.0.0 e tutto ha funzionato.

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
  }
}

Questo ha funzionato per me! Aggiornamento rapido: non è possibile utilizzare un modulo npm diretto per il pacchetto reagente nativo e disporre invece di un tarball. In tal caso, è possibile utilizzare lo stato reattivo per verificare la versione di RN. :)
blakeface

15

Basta andare al tuo android/app/build.gradlee quindi aggiungere alla dependenciessezione:

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

/// la versione nativa di reazione si trova in package.json


5
dove cambio per iOS
Anurag Shrivastava,

qual è la modifica equivalente in package.json?
Nate Glenn,

8

forza la reazione della versione nativa nel file gradle a livello di app del tuo Android, nella dependenciessezione.

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

ha funzionato per me


2
Questo ha funzionato per me. Ho 0,53.3. Ho aggiunto una forza con 0.53.3, riavviato i terminali, ho npm start -- --reset-cachefunzionatoreact-native run-android
Florin Dobre,

6

Non ho mai visto questo errore prima, ma ogni volta che non riesco a far funzionare bene Xcode e React-Native, faccio un paio di cose. Controlla con quale versione di Xcode sto lavorando. Se deve essere aggiornato, lo aggiorno. Quindi svuotare watchman e la cache sono il secondo posto in cui vado. Non utilizzo il comando reset cache. Dice sempre che devo verificare la cache, quindi lo salto (puoi farlo, però mi confondo). Uso rm -rf $ TMPDIR / reazioni- * per eliminare qualsiasi build memorizzata nella cache. Se ciò non funziona, provo a compilare l'app in Xcode, quindi mi faccio strada da lì, per costruirla con run-ios di reazione nativa. Con questo messaggio di errore, sembra che potresti iniziare provando a crearlo con Xcode. Spero che ti aiuti ... fammi sapere i tuoi progressi. In bocca al lupo! (Inoltre, è possibile aggiornare a RN 0.


L'altra cosa è che ho giocato con expo. Mi chiedo se ciò abbia incasinato le cose
Sam Rao il

Potresti semplicemente fare npm install --save reaction-native@0.51 Ma prima proverei a costruirlo con Xcode. L'hai già fatto? Se hai bisogno di aiuto, fammi sapere.
Jared Nelson,

6

Se stai eseguendo la tua app React Native tramite Expo, l'aggiornamento di React Native può causare questo errore (come indicato su https://github.com/expo/expo/issues/923 ).

Se questo è il tuo scenario, le tue opzioni sono:

  1. Bump Expo (che è elencato nel tuo package.json) a una versione compatibile con la tua versione nativa di React ( se presente, il che potrebbe non essere il caso - a giudicare dal problema collegato, immagino che il supporto di Expo segua le versioni di React Native).
  2. Ignora le modifiche, elimina e reinstalla i moduli del nodo, espelli da Expo e quindi (dopo aver verificato che puoi ancora eseguire la tua app dopo l'espulsione) riprova l'aggiornamento.

Expo supporta solo reagenti nativi fino a 59,8 al momento della stesura. Per la compatibilità con expo / reagente nativo, consultare docs.expo.io/versions/latest/sdk/overview/#sdk-version (non è la stessa causa di errore dell'OP, ma sembra rilevante notare).
Tijs Maas

6

Ho avuto questo problema per il tempo più lungo e nessuna delle soluzioni di cui sopra ha aiutato. Ero nel bel mezzo di un aggiornamento nativo di un create-react-native-appprogetto fino a quando non ho scoperto che non tutte le versioni di Expo supportano l'ultimo React Native.

Ho trovato questa pagina collegata nella documentazione che mostra quali combinazioni di versioni di React Native, React ed Expo sono ufficialmente supportate:

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

Modificando i file app.jsone package.jsonin modo che corrispondano alle versioni corrispondenti ed eseguendo npm installtutto ha funzionato di nuovo.


6

Sto usando un dispositivo fisico, nel mio caso questo ha risolto il problema:

  1. Disinstalla l'app
  2. lsof -i :8081
  3. kill -9 PID
  4. Ricostruisci l'app ( react-native run-androido react-native run-ios)

La semplice uccisione di tutti i PID lsof -i :8081e la ricostruzione lo hanno fatto per me su iOS Simulator.
Ronan Boiteau,

Lo stesso qui - provato Rimraf node_modules, npm start —reset-cache, ecc. - Non ha funzionato. Poi ho fatto come sopra: app disinstallata, usato taskkill / im node.exe e taskkill / f / PID (numero indicato nell'ultimo passaggio, del PID esistente), quindi reagire-nativo run-android. Ha funzionato a meraviglia!
user1641906,

5

Per gli sviluppatori Android che non sono riusciti a risolverlo semplicemente chiudendo e ricostruendo, disinstallare manualmente l'app sull'emulatore / dispositivo.


3
Disinstallare l'app dal simulatore IOS ha funzionato per me.
negative_zero

5

Nel tuo file build.gradle aggiungi quanto segue

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

sostituisci 0.51.0con la versione in package.json


4

Prova a installare di nuovo le dipendenze. Ha funzionato per me

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


3

Per me era dovuto alla react-nativeversione nella dependencysezione del package.jsonfile. Era:

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

L'ho insegnato a:

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

Ora funziona benissimo.


3

Per il mio caso lo sto affrontando su iOS, e ho provato a resettare e cancellare tutta la cache usando il comando sottostante ma non ci sono riuscito, nonostante molti commenti dicano che la causa principale è che c'è un packager di reazione che funziona da qualche parte per caso, ho riavviato il mio mac e il problema sono rimasti.

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

La soluzione è, per eliminare la cartella di build @ /ios/build, quindi eseguirla react-native run-iosrisolta


3

Ho provato le soluzioni sopra ma aggiungendo questo ad AndroidManifest.xml sembra risolverlo.

  android:usesCleartextTraffic="true"

1
Funzionava come un fascino .. questo è il motivo per cui non mi piacerà mai Android .. C'è sempre una parola magica che risolve i tuoi problemi che ti hanno fatto impazzire per molte ore.
picacode

2

Per gli altri con lo stesso problema su iOS con CocoaPods:

Ho provato tutte le soluzioni sopra, senza fortuna. Ho alcuni pacchetti con dipendenze native nel mio progetto e alcuni di quei moduli pod necessari da installare. Il problema era che React era stato specificato nel mio Podfile, ma il pod React non veniva automaticamente aggiornato usando react-native-git-upgrade.

La correzione è aggiornare tutti i pod installati, eseguendo cd ios && pod install.


2

Nel mio caso l'installazione di un nuovo dispositivo virtuale ha aiutato. Ora sto usando 1 dispositivo per app.


2

Utenti Expo: assicurati che la tua app.jsonversione sdk e la versione package.jsonexpo siano (potrebbero essere uguali) compatibili tra loro.


Grazie! Questa era la soluzione per un nuovo utente dell'esposizione.
Jasper Blues

1

Ho avuto anche questo problema usando Expo e iOS Simulator. Ciò che ha funzionato per me è stato cancellare il simulatoreHardware > Erase All Content and Settings...


Sono abbastanza sicuro che questo possa essere realizzato semplicemente disinstallando l'app Expo dall'emulatore. Non c'è bisogno di tutto.
Ajay,

1

Possibile correzione:

  1. Elimina il pacchetto-lock.json
  2. Correre: watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf node_modules/&& npm install

Se il problema persiste, prova a eseguire il progetto direttamente dall'Xcode

Questo ha funzionato per me.


1

Nel mio caso (NON usando expo e Android build)

package.json

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

E app.json

{
  "sdkVersion": "27"
}

risolto il problema


Questo è vero soprattutto se stai usando Expo. Consulta i documenti di aggiornamento di Expo per ulteriori informazioni: docs.expo.io/versions/latest/workflow/…
blakeface

1

Stavo cercando di creare ed eseguire un'app React Native da WebStorm e ho riscontrato questo problema. La soluzione semplice per me era:

watchman watch-del-all

Su macOS, se watchmannon è già installato, installalo usando Homebrew :

brew install watchman

1

A volte succede quando si tenta di eseguire senza chiudere il server del nodo, in cui era in esecuzione l'app precedente, quindi provare a riavviare React.Per fare ciò, basta eseguire i seguenti comandi:

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

Nel mio caso, ho modificato expomanualmente la versione. Ho avuto lo stesso problema perché ho dimenticato di aggiornare sdkVersion in app.json e babel-preset-expo in package.json

Dopo quella corsa: expo r -cper cancellare la cache e avviare l'app.


1

La correzione che abbiamo fatto è stata quella di assicurarci che le variabili ANDROID_HOME e PATH fossero impostate prima della compilazione.

Innanzitutto, esegui i due comandi seguenti, quindi crea l'app per il dispositivo.

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

1

Ho ottenuto questa classificazione quando le definizioni del tipo TypeScript non corrispondevano.

EG react-nativea 0,61,5 pollici dependenciese @types/react-native0,60,0 pollicidevDependencies .

Non appena ho aggiornato devDependencies ha funzionato. Non è stato necessario riavviare nulla.


0

Questa non è una soluzione, ma nel mio caso avevo installato più app RN sul mio dispositivo e stavo inconsapevolmente tentando di "Ricaricare" dall'applicazione sbagliata. (Al momento sto sviluppando due app contemporaneamente) Quindi assicurati di avere l'applicazione corretta!


0

Prova a cambiare la versione del tuo reagente nativo specificato in package.json (in dipendenze - reagente nativo) con la stessa "Versione nativa" mostrata nel messaggio di errore. Quindi eseguire nuovamente 'npm install'.


qualche idea su come effettuare il downgrade alla versione menzionata in package.json?
HungrySoul

nel tuo package.json dovresti vedere qualcosa come "reazioni-nativo": "^ 0.55.0" sotto "dipendenze". Modificare quel numero (0.55.0 in questo esempio) nella versione desiderata ed eseguire nuovamente "npm install".
Pnar Sbi Wer,

0

Ho avuto lo stesso problema durante la creazione della mia app nativa reattiva per Android e ho fatto quanto segue che ha funzionato per me.

La "versione JavaScript 0.50.1" nella console degli errori è la versione di reazione nativa nel package.jsonfile. Assicurarsi che sia la stessa versione di "Versione nativa 0.50.0" nella console degli errori.

  1. Ho aggiornato la versione di reazione nativa alla "Versione nativa 0.50.0" come richiesto nella console degli errori.
  2. Ricostruisci l'app react-native run-android.

0

Assicurati anche che il wifi sia abilitato nel tuo emulatore


0

Opene projectdir / android / app / build.gradle

Provare:

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

Invece di compilare "com.facebook.react: reazioni-nativo: 0,51,0" {force = true}

Rif .: Link

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.