react-native - studio - update react native
Expo用戶 - 確保您的
app.json
sdk版本和
package.json
expo版本(可能相同)彼此兼容。
只需在您的android的應用程序級別gradle文件中,在
dependencies
部分中強制響應本機版本。
compile ("com.facebook.react:react-native:0.52.0") { force = true }
為我工作
可能的修復:
- 刪除 package-lock.json
-
運行:
watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf node_modules/&& npm install
如果問題仍然存在,請嘗試直接從 Xcode 執行 項目
這對我有用。
嘗試再次安裝依賴項。 這對我有用 -
1.)
yarn/npm install
2.)
yarn/npm start --reset-cache
在build.gradle文件中添加以下內容
implementation ("com.facebook.react:react-native:0.51.0") {
force = true;
}
用
0.51.0
中的版本替換
0.51.0
在我的情況下(不使用expo和Android版本)
的package.json
"dependencies": {
"react": "16.3.1",
"react-native": "0.55.2"
}
和app.json
{
"sdkVersion": "27"
}
解決了這個問題
如果您使用create-react-native-app創建了您的react-native應用程序。 你應該有一個app.json(世博會)。 和package.json文件一樣,檢查expo版本是否匹配並相應更改。 例如在我的情況下,問題是在app.json文件中我有一個25.0.0版本的 expo sdkVersion屬性 ,我將其更改為23.0.0並且一切正常。
的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
}
}
如果您通過Expo運行React Native應用程序,升級React Native可能會導致此錯誤(如 https://github.com/expo/expo/issues/923 )。
如果這是您的方案,您的選擇是:
-
Bump Expo(在你的
package.json
列出)到與你的React Native版本兼容的版本( 如果 存在,可能不是這種情況 - 從鏈接的問題判斷,我認為Expo支持跟踪React Native版本)。 - 放棄您的更改,刪除並重新安裝您的節點模塊,從世博會中 Eject ,然後(在檢查您仍然可以在彈出後運行您的應用程序)再次嘗試升級。
對於在使用CocoaPods的iOS上遇到同樣問題的其他人:
我試過上面的所有解決方案,沒有運氣。
我的項目中有一些包含本機依賴項的包,其中一些需要安裝pod模塊。
問題是我的Podfile中指定了React,但React pod並沒有通過使用
react-native-git-upgrade
自動
react-native-git-upgrade
。
修復方法是通過運行
cd ios && pod install
來升級所有已安裝的
cd ios && pod install
。
對於我的情況,我在iOS上面對它,並且我嘗試使用下面的命令重置並清除所有緩存但是也失敗了,儘管許多評論說根本原因是反應包裝器在某處意外運行,我重新啟動我的mac和問題仍然存在。
watchman watch-del-all && rm -rf node_modules/ && yarn cache clean && yarn install && yarn start --reset-cache
解決方案是刪除構建文件夾@
/ios/build
,然後執行
react-native run-ios
解決它
就我而言,我的android物理設備沒有連接到我的開發機器上運行的js服務器。 所以我必須在我的Android設備上手動設置調試服務器主機和端口。
我之前從未見過這個錯誤,但每當我無法讓Xcode和React-Native在一起玩的時候,我會做一些事情。 檢查我正在使用的Xcode版本。 如果需要更新,我會更新它。 然後清理守望者和緩存是我去的第二個地方。 我不使用reset cache命令。 它總是說我需要驗證緩存,所以我跳過它(你可以這樣做,但我只是感到困惑)。 我使用rm -rf $ TMPDIR / react- *來擺脫任何緩存的構建。 如果這不起作用,我嘗試在Xcode中構建應用程序,然後從那裡開始工作,用react-native run-ios構建它。 有了這個錯誤消息,您似乎可以從嘗試使用Xcode構建它開始。 希望有所幫助...讓我知道你的進步。 祝好運! (此外,您可以更新到RN 0.51作為另一種嘗試同步您的版本。)
我們所做的修復是確保在構建之前設置了ANDROID_HOME和PATH變量。
首先,運行以下兩個命令,然後構建設備的應用程序。
export ANDROID_HOME = / Users / username / MyFiles / applications / androidsdk export PATH = $ PATH:$ ANDROID_HOME / tools:$ ANDROID_HOME / platform-tools
我在構建針對android的本機應用程序時遇到了同樣的問題,我做了以下哪些對我有用。
錯誤控制台中的“JavaScript版本0.50.1”是
package.json
文件中的react-native版本。
確保它與錯誤控制台中的“Native version 0.50.0”版本相同。
- 我已根據錯誤控制台中的提示將react-native版本更新為“Native Version 0.50.0”。
-
重建應用程序
react-native run-android
。
我有這個問題的時間最長,上述解決方案都沒有幫助。
我正在
create-react-native-app
一個
create-react-native-app
項目中
create-react-native-app
升級反應,直到我發現並非所有版本的Expo都支持最新的React Native。
在文檔中找到此頁面,該文檔顯示正式支持React Native,React和Expo的哪些版本組合:
資料來源: https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md : https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md
編輯
app.json
和
package.json
文件以匹配相應的版本並運行
npm install
一切都恢復正常。
我正在使用物理設備,在我的情況下,這解決了問題:
- 卸載應用程序
-
lsof -i :8081
-
kill -9 PID
-
重建應用程序(
react-native run-android
或react-native run-ios
)
打開projectdir / android / app / build.gradle
嘗試:
compile(“com.facebook.react:react-native:0.51.0”){force = true}
而不是編譯“com.facebook.react:react-native:0.51.0”{force = true}
參考: Link
當您嘗試在不關閉之前應用程序運行的節點服務器的情況下運行時,有時會發生這種情況,因此請嘗試重新啟動React。為此,只需運行以下命令:
1. To kill current processes killall node -9 2. To Start React Native react-native start 3. Then Run android react-native run-android
這將特別適用於Android Studio 3.2或更新用戶,因為在升級之前似乎沒有發生這種情況。
如果您沒有在配置中更改React Native的版本(
package.json
,
build.gradle
),那麼在檢出git中的另一個提交後,版本不匹配的問題可能來自項目文件的未檢測到的更改。
為了克服這個問題,請確保:
-
清理構建:
Build > Clean Project
-
使用Gradle文件同步項目:在導航欄上的“
Stop
按鈕旁邊 -
製作項目:導航欄中的第一個按鈕,帶有錘子圖標
-
最後運行/調試應用程序
這也將克服
Session 'app': Error Installing APK
錯誤,一旦從設備卸載應用程序,可能由於即時運行而發生。
這就是我用它做的:
關閉所有終端並再次運行構建。
您可能忘記從另一個項目關閉nodejs終端,他們碰巧安裝了不同的反應版本。
因此,從nodejs服務器獲取的代碼與本機服務器衝突。