React Yerel sürüm uyuşmazlığı


196

Yeni bir proje başlatıp Xcode öykünücüsünü başlattığımda aşağıdaki iletiyi alıyorum:

React-Native Sürüm Uyuşmazlığı

Javascript Sürüm 0.50.1 Yerel sürüm: 0.50.0

Yerel kodu yeniden oluşturduğunuzdan emin olun. ...

Burada neler olup bittiğini bilen ve bana yardımcı olabilecek biri var mı?

Yanıtlar:


342

Bununla yaptığım şey:

Tüm terminalleri kapatın ve derlemeyi tekrar çalıştırın.

Nodejs terminalini başka bir projeden kapatmayı unutabilirsiniz ve bunlar farklı tepki sürümü kurmuşlardır.

Bu nedenle, nodejs sunucusundan alınan kod yerel kodla çakışıyor.


1
şu anda açık olan terminallerimi kapatmak istemezsem (orada çalışan uygulamalarım var)? Başka bir geçici çözüm var mı?
Dimitar Tsonev

1
@DimitarTsonev sadece tepki yerli tarafından açılan belirli terminali kapatabilirsiniz, gösterir Bundling 'index.android.js' 100.0% (1/1), done.
Val

1
build.gradleçalıştığında tepki bağımlılığı versiyonunu kullanarak tam olarak güç uygular. teşekkürler @Val
Jake Oliver

Tüm terminalleri react-native run-ios
kapattı

Ayrıca pod installkokoapod kullanıyorsanız da çalıştırın .
Dizi

36

Reat-native uygulamanızı create-tepki-native-uygulamasını kullanarak oluşturduysanız. Bir app.json (expo) dosyanız olmalıdır. ve bir package.json dosyası varsa, expo sürümlerinin eşleşip eşleşmediğini kontrol edin. Örneğin benim durumumda sorun app.json dosyasında expo sdkVersion özniteliği için 25.0.0 sürümü vardı , ben 23.0.0 olarak değiştirmek ve her şey çalıştı oldu.

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

Bu benim için çalıştı! Hızlı güncelleme: Reat-native paketiniz için doğrudan bir npm modülü kullanamazsınız ve bunun yerine bir tarball'a sahip olabilirsiniz. Bu durumda, RN sürümünüzü doğrulamak için yerel tepki durumunu kullanabilirsiniz. :)
blakeface

15

Sadece kendinize gidin android/app/build.gradleve dependenciesbölüme ekleyin :

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

/// yerel tepki sürümü package.json içinde bulunabilir


5
iOS

package.json'daki eşdeğer değişiklik nedir?
Nate Glenn

8

bölümünde, androidinizin uygulama düzeyindeki gradle dosyasında yerel sürümü kullanmaya zorlayın dependencies.

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

benim için çalıştı


2
Bu benim için çalıştı. 0.53.3'üm var. 0.53.3 ile bir kuvvet ekledim, terminalleri yeniden başlattım, koştum npm start -- --reset-cacheve koştumreact-native run-android
Florin Dobre

6

Bu hatayı daha önce hiç görmedim, ancak Xcode ve React-Native'ı birlikte iyi oynayamazsam, birkaç şey yaparım. Hangi Xcode sürümü ile çalıştığımı kontrol edin. Güncellenmesi gerekiyorsa, güncelliyorum. Sonra bekçi ve önbelleği temizlemek ikinci gittiğim yer. Önbelleği sıfırla komutunu kullanmıyorum. Her zaman önbelleği doğrulamam gerektiğini söylüyor, bu yüzden atladım (bunu yapabilirsin, sadece kafam karıştı). Önbelleğe alınmış yapılardan kurtulmak için rm -rf $ TMPDIR / reakt- * kullanıyorum. Bu işe yaramazsa, uygulamayı Xcode'da oluşturmaya çalışırım, sonra oradan yoluma çalışırım, tepki-yerel run-ios ile inşa ederim. Bu hata mesajıyla, Xcode ile oluşturmaya çalışarak başlayabileceğiniz anlaşılıyor. Umarım yardımcı olur ... ilerlemeni bilmeme izin ver. İyi şanslar! (Ayrıca, RN 0'a güncelleyebilirsiniz.


Diğeri ise fuarla oynadım. Acaba bu işleri berbat ederse
Sam Rao

Sadece npm install --save reakt-native@0.51 yapabilirsiniz ama önce Xcode ile inşa etmeyi denerdim. Bunu henüz yaptın mı? Yardıma ihtiyacın olursa bana haber ver.
Jared Nelson

6

React Native uygulamanızı Expo aracılığıyla çalıştırıyorsanız, React Native'i yükseltmek bu hataya neden olabilir ( https://github.com/expo/expo/issues/923 adresinde belirtildiği gibi ).

Senaryonuz buysa, seçenekleriniz şunlardır:

  1. (Sepetinde listelenen Bump Expo package.jsonsizin Tepki Yerli sürümü ile uyumlu bir sürüme) ( eğer bir durumda olmayabilir, hangi var - bağlantılı sorundan bakılırsa, rakam Expo destek rotaları Yerli bültenleri tepki olduğunu).
  2. Değişikliklerinizi atın, Düğüm modüllerinizi silin ve yeniden yükleyin , Expo'dan Çıkart ve ardından (uygulamadan çıkarıldıktan sonra da çalıştırabildiğinizi kontrol ettikten sonra) yeni sürüme geçmeyi tekrar deneyin.

Expo, yazma anında yalnızca 59.8'e kadar olan yerel tepkileri destekler. Expo / tepki-yerel uyumluluk için bkz. Docs.expo.io/versions/latest/sdk/overview/#sdk-version (OP ile aynı hatanın nedeni değil, ancak notla ilgili gibi görünüyor.)
Tijs Maas

6

Bu sorunu en uzun süre yaşadım ve yukarıdaki çözümlerin hiçbiri yardımcı olmadı. create-react-native-appExpo'nun tüm sürümlerinin en son React Native'i desteklemediğini öğreninceye kadar , bir projede yerel tepkiyi yükseltmenin ortasındaydım .

Bu sayfayı, React Native, React ve Expo sürümlerinin hangi sürüm kombinasyonlarının resmi olarak desteklendiğini gösteren belgelerde bulabilirsiniz:

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

app.jsonVe package.jsondosyalarını karşılık gelen sürümlerle eşleşecek şekilde düzenlemek ve npm installher şeyi yeniden çalıştırmak .


6

Fiziksel bir cihaz kullanıyorum, benim durumumda bu sorunu çözdü:

  1. Uygulamanın yüklemesini kaldırın
  2. lsof -i :8081
  3. kill -9 PID
  4. Uygulamayı yeniden oluştur ( react-native run-androidveya react-native run-ios)

İOS lsof -i :8081Simulator'da tüm PID'leri öldürmek ve yeniden inşa etmek benim için yaptı.
Ronan Boiteau

Burada aynı - Rimraf node_modules, npm start —reset-cache, vb - denendi - hiçbir şey işe yaramadı. Sonra yukarıdaki gibi yaptım - kaldırıldı app, kullanılan taskkill / im node.exe ve taskkill / f / PID (son adımda verilen sayı, mevcut PID), daha sonra yerli-run run android. Bir tedavi çalıştı!
user1641906

5

Sadece kapatarak ve yeniden yapılandırarak düzeltilemeyen Android geliştiricileri için, emülatör / cihazdaki uygulamayı manuel olarak kaldırın.


3
Uygulamanın IOS simülatöründen kaldırılması benim için çalıştı.
negative_zero

5

Build.gradle dosyanıza aşağıdakileri ekleyin

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

0.51.0paketinizdeki sürümle değiştirin .


4

Bağımlılıkları tekrar yüklemeyi deneyin. Bu benim için çalıştı-

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


3

Benim için dosyanın bölümündeki react-nativesürümden kaynaklanıyordu . Öyleydi:dependencypackage.json

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

Bunu şu şekilde sıraladım:

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

Şimdi iyi çalışıyor.


3

Benim durumum için iOS'ta karşı karşıyayım ve aşağıdaki komutu kullanarak tüm önbelleği sıfırlamaya ve temizlemeye çalıştım, ancak çok başarısız olmasına rağmen, kök nedeninin yanlışlıkla bir yerde çalışan reaksiyon paketleyicisi olduğunu söyleyen birçok yoruma rağmen, yeniden başlattım Mac'im ve sorun hala devam etti.

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

Çözüm, derleme klasörünü @ silmek /ios/build, ardından yürütmek react-native run-iosçözüldü


3

Yukarıdaki çözümleri denedim ancak bunu AndroidManifest.xml dosyasına eklemek sorunu çözüyor gibi görünüyor.

  android:usesCleartextTraffic="true"

1
Bu cazibe gibi çalıştı .. ben android asla sevmeyeceğim nedeni budur .. Her zaman sizi saatlerce deli tahrik sorunları çözen sihirli bir kelime vardır.
picacode

2

CocoaPods ile iOS'ta aynı sorunu olan diğerleri için:

Yukarıdaki tüm çözümleri şanssız denedim. Projemde yerel bağımlılıklara sahip bazı paketler var ve gerekli olan bazı pod modülleri kuruluyor. Sorun, React'ın Pod dosyamda belirtilmiş olmasıydı, ancak React bölmesi kullanılarak otomatik olarak yükseltilemedi react-native-git-upgrade.

Düzeltme, yüklü tüm bölmeleri çalıştırarak yükseltmektir cd ios && pod install.


2

Benim durumumda yeni bir sanal aygıt kurmak yardımcı oldu. Şimdi uygulama başına 1 cihaz kullanıyorum.


2

Expo kullanıcıları - app.jsonsdk sürümünüzün ve package.jsonexpo sürümünüzün birbiriyle uyumlu (eşit olabilir) olduğundan emin olun .


Teşekkür ederim! Bu yeni bir expo kullanıcısı için bir çözümdü.
Jasper Blues

1

Expo ve iOS Simulator'ı kullanarak da bu sorunu yaşadım. Benim için işe yarayan şey Simülatörü silmekti.Hardware > Erase All Content and Settings...


Bunun sadece Expo uygulamasını emülatörden kaldırarak gerçekleştirilebileceğinden eminim. Her şeye gerek yok.
Ajay

1

Olası Düzeltme:

  1. Sil paket lock.json
  2. Çalıştırmak: watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf node_modules/&& npm install

Sorun devam ederse, projeyi doğrudan Xcode'dan yürütmeyi deneyin

Bu benim için çalıştı.


1

Benim durumumda (expo ve Android derlemesi kullanma DEĞİL)

package.json

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

Ve app.json

{
  "sdkVersion": "27"
}

sorunu çözdü


Bu, özellikle Expo kullanıyorsanız doğrudur. Daha fazla bilgi için Expo'nun yükseltme belgelerine göz atın
blakeface

1

WebStorm'dan bir React Native uygulaması oluşturmaya ve çalıştırmaya çalışıyordum ve bu problemle karşılaştım. Benim için basit çözüm şuydu:

watchman watch-del-all

MacOS'ta, watchmanhenüz yüklü değilse , Homebrew kullanarak yükleyin :

brew install watchman

1

Bazen, önceki uygulamanın çalıştığı düğüm sunucusunu kapatmadan çalıştırmayı denediğinizde gerçekleşir, bu nedenle React'i yeniden başlatmayı deneyin. Bunu yapmak için aşağıdaki komutları çalıştırın:

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

Benim durumumda exposürümü manuel olarak değiştirdim . Güncelleme için unuttum çünkü aynı sorunu var sdkVersion içinde app.json ve babel-ön ayarlı-expo içinde package.json

Bundan sonra: expo r -cönbelleği temizlemek ve uygulamayı başlatmak için.


1

Yaptığımız düzeltme, ANDROID_HOME ve PATH değişkenlerinin derlemeden önce ayarlandığından emin olmaktı.

İlk olarak, aşağıdaki iki komutu çalıştırın, ardından cihaz için uygulamayı oluşturun.

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

1

Bu sınıflandırma TypeScript türü tanımları uyumsuz olduğunda aldım.

EG react-native0,61,5 inç dependenciesve @types/react-native0,60,0 inçdevDependencies .

DevDependencies'ı güncellediğimde işe yaradı. Hiçbir şeyi yeniden başlatmak zorunda kalmadım.


0

Bu bir düzeltme değil, ancak benim durumumda, cihazımda yüklü birden fazla RN uygulaması vardı ve bilmeden yanlış uygulamadan 'Yeniden Yükle' deniyordum. (Şu anda aynı anda iki uygulama geliştiriyorum) Bu yüzden doğru uygulamada olduğunuzdan emin olun!


0

Package.json öğesinde belirtilen reaktif-yerel sürümünüzü (bağımlılıklar altında - reaktif-yerel) hata iletisinde gösterilen 'Yerel Sürüm' ile aynı şekilde değiştirmeyi deneyin. Sonra tekrar 'npm install' komutunu çalıştırın.


package.json içinde belirtilen sürüme nasıl düşürüleceği hakkında herhangi bir fikir?
HungrySoul

paketinizde .json "bağımlılıklar" altında "tepki-doğal": "^ 0.55.0" gibi bir şey görmelisiniz. Bu sayıyı (bu örnekte 0.55.0) istediğiniz sürüme değiştirin ve "npm install" komutunu tekrar çalıştırın.
Pnar Sbi Wer

0

Ben android için benim tepki yerli app inşa ederken aynı sorunu var ve ben benim için çalıştı aşağıdaki yaptı.

Hata konsolundaki "JavaScript sürümü 0.50.1", package.jsondosyanızdaki yerel yanıt sürümüdür . Hata konsolundaki "Yerel sürüm 0.50.0" ile aynı sürüm olduğundan emin olun.

  1. Reat-native sürümünü hata konsolunda istendiği gibi "Yerel Sürüm 0.50.0" olarak güncelleştirdim.
  2. Uygulamayı yeniden oluşturun react-native run-android.

0

Emülatörünüzde wifi özelliğinin de etkinleştirildiğinden emin olun


0

Opene projectdir / android / app / build.gradle

Deneyin:

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

"Com.facebook.react: reakt-native: 0.51.0" derlemek yerine {force = true}

Referans: Bağlantı

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.