在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML5/ React Native 安卓 程序運行報錯: React Native ver

React Native 安卓 程序運行報錯: React Native version mismatch

1.問題:
React Native開發(fā)Android,打包簽名的APK沒有問題,可以正常運行,但是直接在工程中通過命令行react-native run-android,以開發(fā)模式運行程序,程序啟動后報錯:

React Native version mismatch.

JavaScript version: 0.54.3
Native version: 0.55.3
Make sure that you have rebuilt the native code. If the problem persists try clearing the Watchman and packager caches with `watchman watch-del-all && react-native start --reset-cache`.
  reactConsoleErrorHandler    
  checkVersions    
  (anonymous function)    
  loadModuleImplementation    
  guardedLoadModule    
  _require    
  (anonymous function)    
  executeApplicationScript    
  (anonymous function)    
regeneratorRuntime is not defined
  handleException    
  handleError    
  reportFatalError    
  guardedLoadModule    
  _require    
  (anonymous function)    
  executeApplicationScript    
  (anonymous function)    
Failed to print error: 

原因不明。
試過將node_modules整體刪除再安裝,不好用。
這個問題到底是什么原因引起的,如何修復(fù)呢?

回答
編輯回答
真難過

這個問題已經(jīng)得到解決,參照stackoverflow上的問題:https://stackoverflow.com/que...
這個問題的原因就處在Android工程中app/build.gradle中,build.gradle中對于 react-native庫的版本的配置默認(rèn)是這么寫的:

compile 'com.facebook.react:react-native:+'

這個最后面的 “+” 表示的是使用最新的版本號。
也就是說,我們Android工程中,依賴的React native 的native代碼版本號是使用網(wǎng)絡(luò)上發(fā)布的最新版本。
這也是我們這個問題產(chǎn)生的根本原因。
按照上面鏈接中的問題的回答,進(jìn)行如下修改:

compile ('com.facebook.react:react-native:0.54.3') { force = true }

再執(zhí)行 react-native run-android,一切恢復(fù)正常。真是個大坑,耽誤了自己一上午的時間。

補充:
報這個錯誤還有一種情況,那就是我們先用react-native run-android運行了其他的不同RN版本的工程,這個時候,如果我們不關(guān)閉其他運行中的RN工程的調(diào)試進(jìn)程就在我們想要啟動的工程下面運行react-native run-android 命令的話,也會在安裝的 app中報這個錯誤,也就是對應(yīng) stack overflow 鏈接中的票數(shù)最多的回答。

總結(jié)一下:
產(chǎn)生這個錯誤可能有兩種情況:
第一種情況,也是比較常見的情況是:有其他不同RN版本號的工程以開發(fā)模式運行,這時如果我們以 react-native run-android 運行我們自己想要調(diào)試的工程的話,會報這個錯誤。
第二種情況,可能相比第一種情況不常見,原因在于可能在我們的開發(fā)周期內(nèi),RN的Native版本庫不一定會更新。第二種情況就是,我們在Android工程中配置的RN庫版本與 JS工程中配置的RN庫版本不一致。這種情況下只需將 android/app/build.gradle 下的RN庫默認(rèn)配置改為:

compile ('com.facebook.react:react-native:0.54.3') { force = true } // 0.54.3 處變?yōu)樽约旱腏S工程中的相應(yīng)版本號

問題即可解決。

2018年6月20日 17:46