Phản ứng không phù hợp với phiên bản gốc


196

Nhận thông báo sau khi tôi khởi tạo dự án mới và sau đó khởi chạy trình giả lập Xcode:

Phiên bản không phù hợp

Phiên bản Javascript 0,5.1 Phiên bản gốc: 0,50.0

Hãy chắc chắn rằng bạn đã xây dựng lại mã gốc. ...

Có ai biết những gì đang xảy ra ở đây và có thể giúp tôi?

Câu trả lời:


337

Đây là những gì tôi đã làm với nó:

Đóng tất cả các thiết bị đầu cuối và chạy xây dựng lại.

Bạn có thể quên đóng thiết bị đầu cuối nodejs từ một dự án khác và chúng tình cờ đã cài đặt phiên bản phản ứng khác nhau.

Vì vậy, mã tìm nạp từ máy chủ nodejs xung đột với bản gốc.


1
Điều gì xảy ra nếu tôi không muốn đóng các thiết bị đầu cuối hiện đang mở của mình (tôi có các ứng dụng đang chạy ở đó)? Có một cách giải quyết khác?
Dimitar Tsonev

1
@DimitarTsonev bạn chỉ có thể đóng thiết bị đầu cuối cụ thể được mở bằng Reac -igen, hiển thị Bundling 'index.android.js' 100.0% (1/1), done.
Val

1
buộc hoàn toàn sử dụng phiên bản phụ thuộc phản ứng trong build.gradlelàm việc. cảm ơn @Val
jake oliver

Đóng tất cả các thiết bị đầu cuối và sử dụng:react-native run-ios
Steffo Dimfelt

cũng chạy pod installnếu bạn đang sử dụng cocoapods.
Mảng

37

Trong trường hợp bạn đã tạo ứng dụng gốc phản ứng của mình bằng ứng dụng tạo-Reac -igen-app. Bạn nên có một app.json (expo). và tệp pack.json, kiểm tra xem các phiên bản expo có khớp và thay đổi tương ứng không. Ví dụ, trong trường hợp của tôi, vấn đề là trong tệp app.json tôi đã có phiên bản 25.0.0 cho thuộc tính expk sdkVersion , tôi thay đổi nó thành 23.0.0 và mọi thứ đều hoạt động.

gói.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
  }
}

Điều này làm việc cho tôi! Cập nhật nhanh: bạn không được sử dụng mô-đun npm trực tiếp cho gói phản ứng gốc của mình và thay vào đó có tarball. Nếu đó là trường hợp, bạn có thể sử dụng trạng thái phản ứng gốc để xác minh phiên bản RN của bạn. :)
blakeface

15

Chỉ cần đi đến của bạn android/app/build.gradlevà sau đó thêm vào dependenciesphần:

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

/// phiên bản gốc phản ứng có thể được tìm thấy trong pack.json


5
Tôi thay đổi ở đâu cho ios
Anurag Shrivastava

sự thay đổi tương đương trong gói.json là gì?
Nate Glenn

8

chỉ cần phản ứng phiên bản gốc trong tệp phân loại cấp ứng dụng Android của bạn, trong dependenciesphần.

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

đã làm cho tôi


2
Điều này làm việc cho tôi. Tôi có 0,53,3. Tôi đã thêm một lực với 0,53.3, khởi động lại thiết bị đầu cuối, chạy npm start -- --reset-cachevà chạyreact-native run-android
Florin Dobre

6

Tôi chưa bao giờ thấy lỗi này trước đây, nhưng bất cứ khi nào tôi không thể có được Xcode và React-Native để chơi tốt với nhau, tôi sẽ làm một vài điều. Kiểm tra phiên bản Xcode nào tôi đang làm việc. Nếu nó cần được cập nhật, tôi cập nhật nó. Sau đó, xóa watchman và bộ nhớ cache là nơi thứ hai tôi đi. Tôi không sử dụng lệnh đặt lại bộ đệm. Nó luôn nói rằng tôi cần xác minh bộ đệm, vì vậy tôi bỏ qua điều đó (mặc dù bạn có thể làm điều đó, tôi chỉ bị nhầm lẫn). Tôi sử dụng rm -rf $ TMPDIR / Reac- * để loại bỏ mọi bản dựng được lưu trong bộ nhớ cache. Nếu điều đó không hiệu quả, tôi cố gắng xây dựng ứng dụng trong Xcode, sau đó làm việc theo cách của tôi từ đó, để xây dựng nó với run-ios tự nhiên. Với thông báo lỗi này, có vẻ như bạn có thể bắt đầu bằng cách thử xây dựng nó bằng Xcode. Hy vọng điều đó sẽ giúp ... cho tôi biết sự tiến bộ của bạn với nó. Chúc may mắn! (Ngoài ra, bạn có thể cập nhật lên RN 0.


Một điều khác là tôi đã chơi xung quanh với hội chợ. Tự hỏi nếu điều đó làm mọi thứ rối tung lên
Sam Rao

Bạn chỉ có thể thực hiện cài đặt npm --save Reac-native@0.51 Nhưng trước tiên, tôi nên thử xây dựng nó bằng Xcode. Bạn đã làm điều đó chưa? Nếu bạn cần giúp đỡ hãy cho tôi biết.
Jared Nelson

6

Nếu bạn đang chạy ứng dụng React Native của mình thông qua hội chợ triển lãm, việc nâng cấp React Native có thể gây ra lỗi này (như đã lưu ý tại https://github.com/expo/expo/issues/923 ).

Nếu đó là kịch bản của bạn, các tùy chọn của bạn là:

  1. Bump Expo (được liệt kê trong của bạn package.json) thành một phiên bản tương thích với phiên bản React Native của bạn ( nếu tồn tại, có thể không phải là trường hợp - đánh giá bởi vấn đề được liên kết, tôi cho rằng Expo hỗ trợ theo dõi các bản phát hành React Native).
  2. Hủy bỏ các thay đổi của bạn, xóa và cài đặt lại các mô-đun Node, Eject khỏi hội chợ triển lãm và sau đó (sau khi kiểm tra rằng bạn vẫn có thể chạy ứng dụng sau khi phóng), hãy thử nâng cấp lại.

Expo chỉ hỗ trợ phản ứng tự nhiên lên tới 59,8 tại thời điểm viết. Để biết tính tương thích của expo / Reac -igen , hãy xem docs.expo.io/versions/latest/sdk/overview/#sdk-version (đây không phải là nguyên nhân chính xác gây ra lỗi như OP, nhưng dường như có liên quan để lưu ý.)
Tijs Maas

6

Tôi đã có vấn đề này trong thời gian dài nhất và không có giải pháp nào ở trên giúp được. Tôi đang trong quá trình nâng cấp create-react-native-appReact bản địa trong một dự án cho đến khi tôi phát hiện ra rằng không phải tất cả các phiên bản Expo đều hỗ trợ React Native mới nhất.

Tìm thấy trang này được liên kết trong tài liệu cho thấy kết hợp phiên bản nào của React Native, React và Expo được hỗ trợ chính thức:

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

Chỉnh sửa app.jsonpackage.jsoncác tệp để phù hợp với các phiên bản tương ứng và chạy npm installkhiến mọi thứ hoạt động trở lại.


6

Tôi đang sử dụng một thiết bị vật lý, trong trường hợp của tôi, điều này đã giải quyết vấn đề:

  1. Gỡ cài đặt ứng dụng
  2. lsof -i :8081
  3. kill -9 PID
  4. Xây dựng lại ứng dụng ( react-native run-androidhoặc react-native run-ios)

Đơn giản chỉ cần tiêu diệt tất cả các PID từ lsof -i :8081và xây dựng lại đã làm điều đó cho tôi trên iOS Simulator.
Ronan Boiteau

Tương tự ở đây - đã thử Rimraf node_modules, npm start Tập tin bộ nhớ cache, v.v. - không có gì hoạt động. Sau đó, tôi đã làm như trên - gỡ cài đặt ứng dụng, sử dụng taskkill / im node.exe và taskkill / f / PID (số được đưa ra trong bước cuối cùng, của PID hiện tại), sau đó là run-android run-android. Làm việc một điều trị!
dùng1641906

5

Trong tệp build.gradle của bạn thêm vào như sau

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

thay thế 0.51.0bằng phiên bản trong gói.json của bạn


4

Đối với các nhà phát triển Android không thể sửa lỗi bằng cách chỉ đóng và xây dựng lại, hãy gỡ cài đặt thủ công ứng dụng trên trình giả lập / thiết bị.


3
Gỡ cài đặt ứng dụng khỏi trình giả lập IOS làm việc cho tôi.
negative_zero

4

Hãy thử cài đặt các phụ thuộc một lần nữa. Điều đó làm việc cho tôi-

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


3

Đối với tôi đó là do react-nativephiên bản trong dependencyphần của package.jsontập tin. Đó là:

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

Tôi đã tán thành nó:

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

Bây giờ nó hoạt động tốt.


3

Đối với trường hợp của tôi, tôi đang đối mặt với nó trên iOS và tôi đã cố gắng thiết lập lại và xóa tất cả bộ đệm bằng lệnh bên dưới nhưng cũng không thành công, mặc dù có nhiều ý kiến ​​cho rằng nguyên nhân gốc là do vô tình đóng gói đang chạy ở đâu đó, tôi đã khởi động lại mac của tôi và vấn đề vẫn còn.

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

Giải pháp là, để xóa thư mục build @ /ios/build, sau đó thực hiện react-native run-iosgiải quyết nó


3

Tôi đã thử các giải pháp ở trên nhưng việc thêm nó vào AndroidManifest.xml dường như đã khắc phục nó.

  android:usesCleartextTraffic="true"

1
Nó hoạt động như bùa mê .. đây là lý do tôi sẽ không bao giờ thích Android .. Luôn có một từ thần kỳ giải quyết các vấn đề của bạn khiến bạn phát điên trong nhiều giờ.
picacode

2

Đối với những người khác có cùng vấn đề trên iOS với CocoaPods:

Tôi đã thử tất cả các giải pháp trên, không có may mắn. Tôi có một số gói với các phụ thuộc riêng trong dự án của tôi và một số mô-đun pod cần thiết đang được cài đặt. Vấn đề là React đã được chỉ định trong Podfile của tôi, nhưng nhóm React không tự động được nâng cấp bằng cách sử dụng react-native-git-upgrade.

Cách khắc phục là nâng cấp tất cả các nhóm đã cài đặt, bằng cách chạy cd ios && pod install.


2

Trong trường hợp của tôi cài đặt một thiết bị ảo mới giúp. Bây giờ tôi đang sử dụng 1 thiết bị cho mỗi ứng dụng.


2

Người dùng hội chợ triển lãm - đảm bảo app.jsonphiên bản sdk và package.jsonphiên bản expo của bạn (có thể bằng nhau) tương thích với nhau.


Cảm ơn bạn! Đây là giải pháp cho một người dùng expo mới.
Jasper Blues

1

Tôi cũng gặp vấn đề này khi sử dụng Expo và iOS Simulator. Điều làm việc cho tôi là xóa Trình mô phỏng trongHardware > Erase All Content and Settings...


Tôi khá chắc chắn rằng điều này có thể được thực hiện bằng cách chỉ cần gỡ cài đặt ứng dụng Expo khỏi trình giả lập. Không cần tất cả mọi thứ.
Ajay

1

Khắc phục có thể:

  1. Xóa gói-lock.json
  2. Chạy: watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf node_modules/&& npm install

Nếu sự cố vẫn còn, hãy thử thực hiện dự án trực tiếp từ Xcode

Điều này làm việc cho tôi.


1

Trong trường hợp của tôi (KHÔNG sử dụng expo & Android build)

pack.json

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

Và app.json

{
  "sdkVersion": "27"
}

giải quyết vấn đề


Điều này đúng đặc biệt nếu bạn đang sử dụng hội chợ triển lãm. Kiểm tra tài liệu nâng cấp của Expo để biết thêm thông tin: docs.expo.io/versions/latest/workflow/ mẹo
blakeface

1

Tôi đã cố gắng xây dựng và chạy một ứng dụng React Native từ WebStorm và gặp phải vấn đề này. Giải pháp đơn giản cho tôi là:

watchman watch-del-all

Trên macOS, nếu watchmanchưa được cài đặt, hãy cài đặt nó bằng Homebrew :

brew install watchman

1

Đôi khi nó xảy ra khi bạn cố chạy mà không đóng máy chủ nút, trong đó ứng dụng trước đang chạy, vì vậy hãy thử khởi động lại React.Để làm như vậy, chỉ cần chạy các lệnh sau:

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

Trong trường hợp của tôi, tôi đã thay đổi expophiên bản bằng tay. Tôi gặp vấn đề tương tự vì tôi quên cập nhật sdkVersion trong app.jsonbabel-preset-expo trong pack.json

Sau đó chạy: expo r -cđể xóa bộ nhớ cache và khởi động ứng dụng.


1

Cách khắc phục chúng tôi đã làm là đảm bảo các biến ANDROID_HOME và PATH được thiết lập trước khi xây dựng.

Đầu tiên, chạy hai lệnh dưới đây, sau đó xây dựng ứng dụng cho thiết bị.

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

1

Tôi đã nhận được lớp này khi định nghĩa kiểu TypeScript không khớp.

EG react-nativeở 0,61,5 trong dependencies@types/react-native0,60,0 trongdevDependencies .

Ngay sau khi tôi cập nhật devDependencies, nó đã hoạt động. Không phải khởi động lại bất cứ thứ gì.


0

Đây không phải là một sửa chữa, nhưng trong trường hợp của tôi, tôi đã cài đặt nhiều ứng dụng RN trên thiết bị của mình và tôi đã vô tình cố gắng 'Tải lại' từ bên trong ứng dụng sai. (Hiện tại tôi đang phát triển hai ứng dụng) Vì vậy, hãy đảm bảo bạn đang ở đúng ứng dụng!


0

Hãy thử thay đổi phiên bản gốc phản ứng được chỉ định trong gói.json của bạn (theo phụ thuộc - phản ứng gốc) thành giống như 'Phiên bản gốc' được hiển thị trong thông báo lỗi. Sau đó chạy lại 'npm install'.


có ý tưởng nào để hạ cấp xuống phiên bản được đề cập trong gói.json không?
HungrySoul

trong gói.json của bạn, bạn sẽ thấy một cái gì đó như "Reac -igen": "^ 0.55.0" trong "phụ thuộc". Thay đổi số đó (0,55.0 trong ví dụ này) thành phiên bản bạn muốn và chạy lại "npm install".
Pnar Sbi Wer

0

Tôi đã gặp vấn đề tương tự trong khi xây dựng ứng dụng gốc phản ứng của mình cho Android và tôi đã làm những việc sau đây cho tôi.

"Phiên bản JavaScript 1.50.1" trong bảng điều khiển lỗi là phiên bản gốc phản ứng trong package.jsontệp của bạn . Đảm bảo rằng đó là phiên bản tương tự như "Phiên bản gốc 0,50" trong bảng điều khiển lỗi.

  1. Tôi đã cập nhật phiên bản gốc phản ứng thành "Phiên bản gốc 0,50" như được nhắc trong bảng điều khiển lỗi.
  2. Xây dựng lại ứng dụng react-native run-android.

0

Đảm bảo rằng wifi được bật trong trình giả lập của bạn


0

Opene projectdir / android / app / build.gradle

Thử:

biên dịch ("com.facebook.react: Reac -igen: 0.51.0") {force = true}

Thay vì biên dịch "com.facebook.react: Reac -igen: 0.51.0" {force = true}

Tham chiếu: Liên kết

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.