Reaccionar desajuste versión nativa


196

Recibo el siguiente mensaje cuando inicio un nuevo proyecto y luego lanzo el emulador Xcode:

No coincide la versión nativa de React

Javascript Versión 0.50.1 Versión nativa: 0.50.0

Asegúrese de haber reconstruido el código nativo. ...

¿Alguien sabe lo que está pasando aquí y puede ayudarme?

Respuestas:


338

Esto es lo que he hecho con eso:

Cierre todas las terminales y ejecute build nuevamente.

Puede olvidarse de cerrar el terminal nodejs de otro proyecto, y es posible que hayan instalado una versión de reacción diferente.

Entonces, el código que se obtiene del servidor nodejs entra en conflicto con el nativo.


1
¿Qué sucede si no quiero cerrar mis terminales abiertas actualmente (tengo aplicaciones ejecutándose allí)? ¿Hay otra solución alternativa?
Dimitar Tsonev

1
@DimitarTsonev puede cerrar esa terminal específica abierta por react-native, que se muestra Bundling 'index.android.js' 100.0% (1/1), done.
Val

1
forzar completamente usando la versión de dependencia reaccionar en build.gradletrabajado. gracias @Val
jake oliver

Cerró todas las terminales y usó:react-native run-ios
Steffo Dimfelt

También corra pod installsi está usando cocoapods.
Array

37

En caso de que haya creado su aplicación react-native usando create-react-native-app. Deberías tener una app.json (expo). y un archivo package.json, verifique si las versiones de la exposición coinciden y cambian en consecuencia. Por ejemplo, en mi caso, el problema era que en el archivo app.json tenía una versión 25.0.0 para el atributo expo sdkVersion , lo cambié a 23.0.0 y todo funcionó.

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

¡Esto funcionó para mí! Actualización rápida: no puede usar un módulo npm directo para su paquete react-native y en su lugar tiene un tarball. Si ese es el caso, puede usar el estado react-native para verificar su versión de RN. :)
blakeface

15

Simplemente vaya a su android/app/build.gradley luego agregue a la dependenciessección:

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

/// la versión nativa de reacción se puede encontrar en package.json


55
¿Dónde cambio para iOS?
Anurag Shrivastava

¿Cuál es el cambio equivalente en package.json?
Nate Glenn

8

simplemente fuerce reaccionar versión nativa en el archivo gradle de nivel de aplicación de su Android, en la dependenciessección.

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

trabajó para mi


2
Esto funcionó para mí. Tengo 0.53.3. Agregué una fuerza con 0.53.3, reinicié terminales, corrí npm start -- --reset-cachey corríreact-native run-android
Florin Dobre

6

Nunca he visto este error antes, pero cada vez que no puedo hacer que Xcode y React-Native jueguen bien juntos, hago un par de cosas. Comprueba con qué versión de Xcode estoy trabajando. Si necesita ser actualizado, lo actualizo. Luego, limpiar el vigilante y el caché son el segundo lugar al que voy. No uso el comando reset cache. Siempre dice que necesito verificar el caché, así que me salteo eso (aunque puedes hacerlo, me confundo). Yo uso rm -rf $ TMPDIR / react- * para deshacerme de cualquier compilación en caché. Si eso no funciona, trato de construir la aplicación en Xcode, luego trabajo desde allí, para construirla con react-native run-ios. Con este mensaje de error, parece que podría comenzar intentando compilarlo con Xcode. Espero que eso ayude ... déjame saber tu progreso ¡Buena suerte! (Además, puede actualizar a RN 0.


La otra cosa es que jugué con expo. Me pregunto si eso arruinó las cosas
Sam Rao

Podrías hacer npm install --save react-native@0.51 Pero, primero intentaré compilarlo con Xcode. ¿Ya hiciste eso? Si necesita ayuda, hágamelo saber.
Jared Nelson

6

Si está ejecutando su aplicación React Native a través de Expo, la actualización de React Native puede causar este error (como se indica en https://github.com/expo/expo/issues/923 ).

Si ese es su escenario, sus opciones son:

  1. Bump Expo (que aparece en su package.json) a una versión que sea compatible con su versión React Native ( si existe, que puede no ser el caso; a juzgar por el problema vinculado, creo que el soporte de Expo rastrea los lanzamientos de React Native).
  2. Descarte sus cambios, elimine y vuelva a instalar sus módulos Node, Expulse de la Expo y luego (después de comprobar que aún puede ejecutar su aplicación después de la expulsión) intente actualizar de nuevo.

Expo solo admite react-native hasta 59.8 en el momento de la escritura. Para la compatibilidad expo / react-native, consulte docs.expo.io/versions/latest/sdk/overview/#sdk-version (no es exactamente la misma causa de error que el OP, pero parece relevante tenerlo en cuenta)
Tijs Maas

6

Tuve este problema durante mucho tiempo y ninguna de las soluciones anteriores me ayudó. Estaba en medio de la actualización create-react-native-appReact Native en un proyecto hasta que descubrí que no todas las versiones de Expo admiten la última React Native.

Encontramos esta página vinculada en la documentación que muestra qué combinaciones de versiones de React Native, React y Expo son oficialmente compatibles:

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

La edición de los archivos app.jsony package.jsonpara que coincida con las versiones correspondientes y la ejecución npm installhizo que todo volviera a funcionar.


6

Estoy usando un dispositivo físico, en mi caso esto resolvió el problema:

  1. Desinstala la aplicación
  2. lsof -i :8081
  3. kill -9 PID
  4. Reconstruir la aplicación ( react-native run-androido react-native run-ios)

Simplemente matar todos los PID lsof -i :8081y reconstruirlo lo hizo por mí en iOS Simulator.
Ronan Boiteau

Lo mismo aquí, probé módulos de nodo Rimraf, inicio npm, reinicio de caché, etc., nada funcionó. Luego hice lo anterior: desinstalé la aplicación, utilicé taskkill / im node.exe y taskkill / f / PID (número dado en el último paso, del PID existente), luego react-native run-android. Trabajó un placer!
user1641906

5

En su archivo build.gradle agregue lo siguiente

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

reemplace 0.51.0con la versión en su paquete.json


4

Para los desarrolladores de Android que no pudieron solucionarlo simplemente cerrando y reconstruyendo, desinstale manualmente la aplicación en el emulador / dispositivo.


3
Desinstalar la aplicación del simulador IOS funcionó para mí.
negative_zero

4

Intente instalar las dependencias nuevamente. Eso funcionó para mí

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


3

Para mí fue debido a la react-nativeversión en la dependencysección del package.jsonarchivo. Era:

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

Lo cambié a:

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

Ahora funciona bien.


3

En mi caso, lo enfrento en iOS, e intenté restablecer y borrar todo el caché usando el siguiente comando, pero también fallé, a pesar de muchos comentarios que dicen que la causa raíz es que hay un paquete de reacción que se ejecuta accidentalmente en algún lugar, he reiniciado mi mac y el problema aún permanecían.

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

La solución es eliminar la carpeta de compilación @ /ios/buildy luego ejecutarla react-native run-iosresuelta


3

He intentado las soluciones anteriores, pero agregar esto a AndroidManifest.xml parece solucionarlo.

  android:usesCleartextTraffic="true"

1
Funcionó de maravilla ... esta es la razón por la que nunca me gustará Android ... Siempre hay una palabra mágica que resuelve tus problemas que te han vuelto loco durante muchas horas.
picacode

2

Para otros con el mismo problema en iOS con CocoaPods:

Probé todas las soluciones anteriores, sin suerte. Tengo algunos paquetes con dependencias nativas en mi proyecto, y algunos de esos módulos de módulos necesarios están siendo instalados. El problema fue que React se especificó en mi Podfile, pero el Pod React no se actualizó automáticamente mediante el uso react-native-git-upgrade.

La solución es actualizar todos los pods instalados, mediante la ejecución cd ios && pod install.


2

En mi caso, ayudó la instalación de un nuevo dispositivo virtual. Ahora estoy usando 1 dispositivo por aplicación.


2

Usuarios de la Expo: asegúrese de que su app.jsonversión SDK y la package.jsonversión EXPO sean (pueden ser iguales) compatibles entre sí.


¡Gracias! Esta fue la solución para un nuevo usuario de expo.
Jasper Blues

1

También tuve este problema usando Expo y iOS Simulator. Lo que funcionó para mí fue borrar el simulador enHardware > Erase All Content and Settings...


Estoy bastante seguro de que esto se puede lograr simplemente desinstalando la aplicación Expo del emulador. No hay necesidad de todo.
Ajay

1

Posible solución:

  1. Eliminar el paquete-lock.json
  2. Correr: watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf node_modules/&& npm install

Si el problema persiste, intente ejecutar el proyecto directamente desde el Xcode

Esto funcionó para mí.


1

En mi caso (NO uso la expo y la compilación de Android)

package.json

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

Y app.json

{
  "sdkVersion": "27"
}

resuelto el problema


Esto es cierto especialmente si estás usando Expo. Consulte los documentos de actualización de Expo para obtener más información: docs.expo.io/versions/latest/workflow/…
blakeface

1

Estaba tratando de construir y ejecutar una aplicación React Native desde WebStorm y me encontré con este problema. La solución simple para mí fue:

watchman watch-del-all

En macOS, si aún watchmanno está instalado, instálelo con Homebrew :

brew install watchman

1

A veces sucede cuando intenta ejecutar sin cerrar el servidor de nodo, en el que se estaba ejecutando la aplicación anterior, así que intente reiniciar React. Para hacerlo, simplemente ejecute los siguientes comandos:

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

En mi caso, cambié la expoversión manualmente. Recibí el mismo problema porque olvidé actualizar sdkVersion en app.json y babel-preset-expo en package.json

Después de esa ejecución: expo r -cpara borrar el caché e iniciar la aplicación.


1

La solución que hicimos fue asegurarnos de que las variables ANDROID_HOME y PATH se configuraron antes de la compilación.

Primero, ejecute los dos comandos a continuación y luego compile la aplicación para el dispositivo.

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

1

Obtuve esta clasificación cuando las definiciones de tipo de TypeScript no coinciden.

EG react-nativea 0.61.5 in dependenciesy @types/react-nativea 0.60.0 indevDependencies .

Tan pronto como actualicé devDependencies, funcionó. No tuve que reiniciar nada.


0

Esto no es una solución, pero en mi caso, tenía varias aplicaciones RN instaladas en mi dispositivo y sin saberlo estaba intentando 'Recargar' desde la aplicación incorrecta. (Estoy desarrollando dos aplicaciones simultáneamente en este momento) ¡Así que asegúrese de estar en la aplicación correcta!


0

Intente cambiar la versión de su react-native especificada en su package.json (bajo dependencias - react-native) a la misma que 'Versión nativa' que se muestra en el mensaje de error. Luego ejecute 'npm install' nuevamente.


¿Alguna idea de cómo degradar a la versión mencionada en el paquete.json?
HungrySoul

en su package.json debería ver algo como "react-native": "^ 0.55.0" en "dependencias". Cambie ese número (0.55.0 en este ejemplo) a su versión deseada y ejecute "npm install" nuevamente.
Pnar Sbi Wer

0

Tengo el mismo problema al crear mi aplicación nativa de reacción para Android e hice lo siguiente que funcionó para mí.

La "versión 0.50.1 de JavaScript" en la consola de error es la versión nativa de reacción en su package.jsonarchivo. Asegúrese de que sea la misma versión que "Versión nativa 0.50.0" en la consola de error.

  1. He actualizado la versión react-native a la "Versión nativa 0.50.0" como se indica en la consola de error.
  2. Reconstruye la aplicación react-native run-android.

0

Asegúrese también de que el wifi esté habilitado en su emulador


0

Opene projectdir / android / app / build.gradle

Tratar:

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

En lugar de compilar "com.facebook.react: react-native: 0.51.0" {force = true}

Ref .: Enlace

Al usar nuestro sitio, usted reconoce que ha leído y comprende nuestra Política de Cookies y Política de Privacidad.
Licensed under cc by-sa 3.0 with attribution required.