React Native 錯誤解決記錄

1 ?java.lang.RuntimeException: Error calling AppRegistry.runApplication

解決:關(guān)閉node服務(wù)端,重新運(yùn)行項目react-native run-android

分析: 從日志最后一行Could not get BatcheBridge,make sure your bundle is packaged correctly可知,是bundle未正常加載,這種情況一般是node服務(wù)未啟動,或者客戶端的網(wǎng)絡(luò)環(huán)境訪問不到node服務(wù)端。

2?npm ERR! errno -4048

解決:

方法一:1)以管理員權(quán)限運(yùn)行 npm install

方法二:1)清空緩存:npm cache clean --force

? ? ? ? ? ? ? ?2)npm install

3 ?If you want to render content on top of the image, consider using aboslute positioning

報錯代碼:

修改后


4?java.lang.NoSuchFieldError: No instance field forceOldAnimationCode of type Z in class ...

解決:升級gif 加載庫版本到1.0.1(React Native官網(wǎng)所指示的最新版本)

分析:React-Native 版本升級導(dǎo)致。參照?React-Native?官網(wǎng)文檔,升級?com.facebook.fresco:animated-gif 到最新注意:是?React-Native官網(wǎng)所使用的最新版本,而不是git上?fresco的最新版本。

5 使用webview加載html亂碼問題

之前:

之后:

6?百度地圖無法定位 :galaxy lib host missing meta-data,make sure you know the right way to integrate galaxy

分析:百度地圖注冊簽名中使用的Sha1值與打包使用的Sha1值不一致導(dǎo)致

解決:在build.gradle中配置正確的簽名

查看本機(jī)android默認(rèn)簽名秘鑰信息

?1)進(jìn)入目錄: C:\Users\用戶名\.android

?2)查看默認(rèn)簽名信息:打開cmd窗口,運(yùn)行命令,keytool -list -v -keystore debug.keystore

7?Native module VectorIconsModule tried to override VectorIconsModule for module name RNVectorIconsModule. If this was your intention, set canOverrideExistingModule=true

解決:找到MainApplication.java(android/app/src/main/java/com),里面有有重復(fù)的引用,把重復(fù)的部分刪除就行了


8?Navigator is deprecated and has been removed from this package. It can now be installed and imported from `react-native-deprecated-custom-components` instead of `react-native

解決:

? 1、cd 當(dāng)前目錄

? 2、npm install react-native-deprecated-custom-components --save

? 3、在使用到Navigator組件時換成 :NavigationExperimental.Navigator即可

9 導(dǎo)入react-native-vector-icons報錯

The development server returned response error code: 500URL: http://10.0.2.2:8081/index.delta?platform=android&dev=true&minify=falseBody:{"type":"InternalError","errors":[],"message":"Metro Bundler has encountered an internal error, please check your terminal error output for more details"}processBundleResult BundleDownloader.java:242...........

解決:How to install react-native-vector-icons? - Stack Overflow


10?使用MediaCodec報錯:

ACodec: [OMX.qcom.video.encoder.avc] storeMetaDataInBuffers (output) failed w/ err -1010

可忽略,不影響使用


11、error code ERR_STREAM_WRITE_AFTER_END

npm 升級到v6.0.1后,運(yùn)行npm install命令會報這個錯誤

這個報錯是版本的bug。

解決辦法:

第一種:降級npm版本(簡單辦法) , npm i npm@5.7.1 -g?

? ? ? ? ps:具體版本幾跟node版本有關(guān),我的node為v9.4.0,安裝 npm 5.6.0會失敗。

第二種:https://github.com/zkat/pacote/issues/142(得折騰下)

第三種:卸載node,npm,重新安裝node(官網(wǎng)node 自帶了npm)


12??npm update check failed

解決:進(jìn)入c:\users\xxxx\.config目錄,設(shè)置configstore文件夾權(quán)限:設(shè)置當(dāng)前用戶為權(quán)限所有者,擁有完全控制權(quán)限

13?"undefined is not a function (evaluating 'reactDevTools.connectToDevTools')"

RN版本升級到0.57.8后,出現(xiàn)這個問題。

原因分析:react-devtools 3.5.0 breaks new project · Issue #22863 · facebook/react-native · GitHub

解決辦法:

? ??1 刪除lock文件:package-lock.json 和 yarn.lock

? ? 2 刪除node_modules

? ? 3 執(zhí)行命令:npm install 或者 yarn install

其它方法:https://www.hellojava.com/a/49062.html? ? (PS:我嘗試了,但是沒有效果)


14 "bundling failed:failed to start watch mode"

問題說明:運(yùn)行react-native run-android編譯項目后,一直卡在BUNDLE加載,一會后,node顯示報錯"bundling failed:failed to start watch mode",具體報錯位置是"jest-haste-map/build/index.js/788行” 報的錯

解決:1? watchmode官網(wǎng)下載離線安裝包

? ? ? ? ? ?2 解壓到C:\Program Files

? ? ? ? ? ?3 配置環(huán)境變量C:\Program Files\watchman

? ? ? ? ? ?4 打開cmd窗口運(yùn)行 watchman -v 命令檢查是否配置成功

? ? ? ? ? 5 以上步驟后,如果問題仍然沒有解決,則:打開cmd命令窗口,執(zhí)行命令"path=%path%;C:\Program Files\watchman",再重新編譯項目(我是這樣成功的)

15 react-native-baidu-map + react-navigation 底部導(dǎo)航,頁面切換后地圖顯示異常。

使用react-navigation中的createBottomTabNavigator創(chuàng)建了底部導(dǎo)航欄,其中一個為地圖,首次切入地圖頁,地圖正常顯示,切換到其它tab再切回到地圖時,地圖上的文字信息(路名、樓宇名稱)全部消失,如圖所示:

解決:

找到node_modules\react-navigation-tabs\src\views\ResourceSavingScene.js文件,把removeClippedSubviews屬性的值修改為Platform.OS === 'ios' ? !isVisible : false

注:我這是在react-navigation 3.x的源碼上改的, react-navigation 2.x的修改差不多( Platform.OS === 'ios' ? !isFocused : false )

再注:建議升級到react-navigation 3.x,tab切換流暢度提升明顯。

修改前


修改后

關(guān)于removeClippedSubviews:

源碼中設(shè)置此屬性是為了優(yōu)化內(nèi)存,但對于react-navigation3.x來說,將removeClippedSubviews屬性設(shè)置為false影響不大,因為3.x版本引入了react-native-screen,看其源碼可得知,3.x版本createBottomTabNavigator 中的tab是在fragment 中的,頁面切換是通過控制FragmentTransaction來實現(xiàn)的,這與2.x版本有本質(zhì)區(qū)別,這也是3.x版本tab切換流暢程度提升較大的緣故。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容