Reagir incompatibilidade de versão nativa

196

Recebendo a seguinte mensagem quando inicio um novo projeto e inicio o emulador do Xcode:

Incompatibilidade da versão React-Native

Javascript Versão 0.50.1 Versão nativa: 0.50.0

Verifique se você reconstruiu o código nativo. ...

Alguém sabe o que está acontecendo aqui e pode me ajudar?

Sam Rao
fonte

Respostas:

337

Isto é o que eu fiz com isso:

Feche todos os terminais e execute a compilação novamente.

Você pode esquecer de fechar o terminal nodejs de outro projeto, e eles têm uma versão de reação diferente instalada.

Portanto, o código buscado no servidor nodejs entra em conflito com o nativo.

Val
fonte
1
e se eu não quiser fechar meus terminais abertos no momento (tenho aplicativos sendo executados lá)? Existe outra solução alternativa?
precisa saber é o seguinte
1
@DimitarTsonev, você pode simplesmente fechar o terminal específico aberto pelo react-native, o que mostra Bundling 'index.android.js' 100.0% (1/1), done.
Val
1
forçar totalmente usando a versão de dependência de reação no build.gradletrabalhado. Obrigado @Val
jake oliver
react-native run-ios
Fechei
Também execute pod installse você estiver usando cocoapods.
Matriz
37

Caso você tenha criado seu aplicativo react-native usando create-react-native-app. Você deve ter um app.json (expo). e um arquivo package.json, verifique se as versões expo correspondem e alteram de acordo. Por exemplo, no meu caso, o problema era que, no arquivo app.json, eu tinha uma versão 25.0.0 para o atributo expo sdkVersion , mudei para 23.0.0 e tudo funcionou.

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
fonte
Isso funcionou para mim! Atualização rápida: você não pode usar um módulo npm direto para o seu pacote react-native e, em vez disso, possui um tarball. Se for esse o caso, você pode usar o status nativo de reação para verificar sua versão do RN. :)
blakeface
15

Basta ir ao seu android/app/build.gradlee depois adicionar à dependenciesseção:

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

/// a versão nativa do react pode ser encontrada em package.json

kunal pal
fonte
5
onde posso mudar para iOS
Anurag Shrivastava
qual é a mudança equivalente no package.json?
Nate Glenn
8

basta forçar a versão nativa a reagir no arquivo gradle no nível do aplicativo do Android, na dependenciesseção

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

trabalhou para mim

Shubham Goel
fonte
2
Isso funcionou para mim. Eu tenho 0.53.3. Eu adicionei uma força com 0.53.3, reiniciei os terminais, corri npm start -- --reset-cachee corrireact-native run-android
Florin Dobre
6

Eu nunca vi esse erro antes, mas sempre que não consigo fazer com que o Xcode e o React-Native funcionem bem juntos, faço algumas coisas. Verifique com qual versão do Xcode estou trabalhando. Se precisar ser atualizado, eu atualizo. Em seguida, limpar o vigia e o cache é o segundo lugar que vou. Eu não uso o comando reset cache. Ele sempre diz que preciso verificar o cache, então pulo isso (você pode fazer isso, porém, fico confuso). Eu uso rm -rf $ TMPDIR / react- * para se livrar de quaisquer compilações em cache. Se isso não funcionar, tento criar o aplicativo no Xcode e, a partir daí, trabalhar com ele, para construí-lo com o run-ios nativo do react. Com esta mensagem de erro, parece que você pode começar tentando construí-lo com o Xcode. Espero que ajude ... deixe-me saber seu progresso com isso. Boa sorte! (Além disso, você pode atualizar para o RN 0.

Jared Nelson
fonte
A outra coisa é que eu brinquei com a expo. Gostaria de saber se isso atrapalhou as coisas
Sam Rao
Você poderia simplesmente instalar o npm --save [email protected] Mas, eu tentaria compilar com o Xcode primeiro. Você já fez aquilo? Se precisar de ajuda, me avise.
Jared Nelson
6

Se você estiver executando seu aplicativo React Native pela Expo, a atualização do React Native poderá causar esse erro (conforme observado em https://github.com/expo/expo/issues/923 ).

Se esse for o seu cenário, suas opções são:

  1. Bump Expo (listado na sua package.json) para uma versão compatível com a versão React Native ( se houver , o que pode não ser o caso - a julgar pelo problema vinculado, acho que o suporte da Expo segue as versões do React Native).
  2. Descarte suas alterações, exclua e reinstale os módulos do Nó, Ejetar da Expo e depois (depois de verificar se você ainda pode executar o aplicativo após a ejeção), tente a atualização novamente.
Mark Amery
fonte
A Expo oferece suporte apenas a reagentes nativos até 59,8 no momento da redação deste documento. Para compatibilidade expo / react -native, consulte docs.expo.io/versions/latest/sdk/overview/#sdk-version (não é exatamente a mesma causa de erro do OP, mas parece relevante notar).
Tijs Maas
6

Eu tive esse problema por um longo tempo e nenhuma das soluções acima ajudou. Eu estava no meio da atualização create-react-native-appdo React Native em um projeto até descobrir que nem todas as versões do Expo suportam o React Native mais recente.

Encontrou esta página vinculada na documentação que mostra quais combinações de versões do React Native, React e Expo são oficialmente suportadas:

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

A edição dos arquivos app.jsone package.jsonpara corresponder às versões correspondentes e a execução npm installfizeram com que tudo funcionasse novamente.

Yatit Thakker
fonte
6

Estou usando um dispositivo físico, no meu caso, isso resolveu o problema:

  1. Desinstalar o aplicativo
  2. lsof -i :8081
  3. kill -9 PID
  4. Recrie o aplicativo ( react-native run-androidou react-native run-ios)
ade_anugerah
fonte
Simplesmente matar todos os PIDs lsof -i :8081e reconstruir fez isso por mim no iOS Simulator.
Ronan Boiteau
O mesmo aqui - tentei Rimraf node_modules, npm start - reset-cache, etc - nada funcionou. Então eu fiz como acima - aplicativo desinstalado, usei taskkill / im node.exe e taskkill / f / PID (número fornecido na última etapa, do PID existente) e depois execute o Android de execução nativo. Trabalhou um prazer!
user1641906
5

No seu arquivo build.gradle, adicione o seguinte

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

substitua 0.51.0pela versão no seu package.json

Nitish Phanse
fonte
4

Para desenvolvedores do Android que não conseguiram consertá-lo apenas fechando e reconstruindo, desinstale manualmente o aplicativo no emulador / dispositivo.

Nadun Liyanage
fonte
3
Desinstalar o aplicativo do simulador IOS funcionou para mim.
negative_zero
4

Tente instalar as dependências novamente. Isso funcionou para mim-

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

Aditi
fonte
3

Para mim, foi devido à react-nativeversão na dependencyseção do package.jsonarquivo. Isso foi:

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

Eu pedi para:

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

Agora funciona bem.

Seyed Morteza Mousavi
fonte
3

No meu caso, estou enfrentando o problema no iOS e tentei redefinir e limpar todo o cache usando o comando abaixo, mas também falhei, apesar de muitos comentários dizerem que a causa principal é que há um pacote de reagentes sendo executado em algum lugar acidentalmente, reiniciei meu mac e o problema ainda permaneciam.

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

A solução é excluir a pasta de compilação @ e /ios/build, em seguida, executar a react-native run-iossolução

Isaac
fonte
3

Eu tentei as soluções acima, mas adicionar isso ao AndroidManifest.xml parece corrigi-lo.

  android:usesCleartextTraffic="true"
ketimaBU
fonte
1
Funcionou como charme .. é por isso que nunca vou gostar de andróide .. Sempre existe uma palavra mágica que resolve seus problemas que o deixaram louco por muitas horas.
picacode 01/04
2

Para outras pessoas com o mesmo problema no iOS com CocoaPods:

Eu tentei todas as soluções acima, sem sorte. Eu tenho alguns pacotes com dependências nativas no meu projeto e alguns desses módulos de pod necessários estão sendo instalados. O problema era que o React foi especificado no meu Podfile, mas o pod do React não foi atualizado automaticamente usando react-native-git-upgrade.

A correção é atualizar todos os pods instalados, executando cd ios && pod install.

brkn
fonte
2

No meu caso, a instalação de um novo dispositivo virtual ajudou. Agora estou usando um dispositivo por aplicativo.

Luminita Balas
fonte
2

Usuários da Expo - verifique se as app.jsonversões sdk e package.jsonexpo são (podem ser iguais) compatíveis entre si.

cherankrish
fonte
Obrigado! Esta foi a solução para um novo usuário da exposição.
Jasper Blues
1

Eu também tive esse problema usando o Expo e o iOS Simulator. O que funcionou para mim foi apagar o Simulator noHardware > Erase All Content and Settings...

catico
fonte
Tenho certeza de que isso pode ser conseguido apenas desinstalando o aplicativo Expo do emulador. Não há necessidade de tudo.
Ajay
1

Possível correção:

  1. Exclua o pacote-lock.json
  2. Corre: watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf node_modules/&& npm install

Se o problema persistir, tente executar o projeto diretamente do Xcode

Isso funcionou para mim.

Alejo
fonte
1

No meu caso (NÃO usando a expo & Android build)

package.json

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

E app.json

{
  "sdkVersion": "27"
}

resolveu o problema

Ajitsen
fonte
Isso é verdade especialmente se você estiver usando a Expo. Confira docs atualização do Expo para mais informações: docs.expo.io/versions/latest/workflow/...
blakeface
1

Eu estava tentando criar e executar um aplicativo React Native do WebStorm e me deparei com esse problema. A solução simples para mim foi:

watchman watch-del-all

No macOS, se watchmanainda não estiver instalado, instale-o usando o Homebrew :

brew install watchman
friederbluemle
fonte
1

Às vezes, acontece quando você tenta executar sem fechar o servidor do nó, no qual o aplicativo anterior estava sendo executado, portanto, tente reiniciar o React.Para fazer isso, basta executar os seguintes 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
civani mahida
fonte
1

No meu caso, mudei a expoversão manualmente. Eu tive o mesmo problema porque esqueci de atualizar o sdkVersion no app.json e o babel-preset-expo no package.json

Depois disso, execute: expo r -cpara limpar o cache e iniciar o aplicativo.

Giang Phan
fonte
1

A correção que fizemos foi garantir que as variáveis ​​ANDROID_HOME e PATH fossem configuradas antes da compilação.

Primeiro, execute os dois comandos abaixo e crie o aplicativo para o dispositivo.

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

Eu recebi essa classificação quando as definições de tipo TypeScript não correspondem.

EG react-nativea 0,61,5 pol dependenciese @types/react-nativea 0,60,0 pol devDependencies.

Assim que eu atualizei o devDependencies, ele funcionou. Não precisava reiniciar nada.

Thomas Hagström
fonte
0

Isso não é uma correção, mas no meu caso, eu tinha vários aplicativos RN instalados no meu dispositivo e estava tentando, sem saber, 'Recarregar' de dentro do aplicativo errado. (Estou desenvolvendo dois aplicativos simultaneamente no momento). Portanto, verifique se você está no aplicativo correto!

Robô amigável
fonte
0

Tente alterar a versão do seu react-native especificada em package.json (em dependências - react-native) para o mesmo que 'Versão nativa' mostrada na mensagem de erro. Em seguida, execute o 'npm install' novamente.

Pnar Sbi Wer
fonte
alguma idéia de como fazer o downgrade para a versão mencionada no package.json?
HungrySoul
em seu package.json, você verá algo como "react-native": "^ 0.55.0" em "dependências". Altere esse número (0.55.0 neste exemplo) para a versão desejada e execute "npm install" novamente.
Pnar Sbi Wer
0

Eu tenho o mesmo problema ao criar meu aplicativo nativo react para android e fiz o seguinte que funcionou para mim.

A "versão JavaScript 0.50.1" no console de erros é a versão nativa de reação no seu package.jsonarquivo. Verifique se a mesma versão é "Versão nativa 0.50.0" no console de erros.

  1. Atualizei a versão react-native para a "Versão nativa 0.50.0", conforme solicitado no console de erros.
  2. Recrie o aplicativo react-native run-android.
Anand Yadav
fonte
0

Verifique também se o wifi está ativado no seu emulador

G. Adnane
fonte
0

Abra projectdir / android / app / build.gradle

Experimentar:

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

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

Ref .: Link

Khurshid Ansari
fonte