React Native version mismatch 错误

开始这篇文章之前,如果急着解决问题,且英语过得去的同学,可以参考这篇文章:https://stackoverflow.com/questions/47763824/react-native-version-mismatch

首先我遇到的问题截图如下

React Native version mismatch 错误_第1张图片

可以看见,提示很清楚明白:React Native version mismatch

这个错误我从前曾经遇见过一次,当时看见了别人的解决方案,就是关闭所有的 terminal,或者是集成开发环境的命令行窗口。

但是今天再次遇到这个问题,发现关闭命令行窗口没有用了,别说关闭命令行窗口,连删掉 node_modules、重启机器等方法我也一一试了,当然,也包括画面中提示的:运行

watchman watch-del-all && react-native start --reset-cache

这个命令。

这些做法都没能解决我的问题,而且这个问题出现的很突然,就是属于那种五分钟前还运行的好好的,但是现在就是死活不好用。

经过各种翻阅资料,最终在这篇文章中找到了答案:https://stackoverflow.com/questions/47763824/react-native-version-mismatch

其实这个错误的根本原因就像提示中告诉我们的那样:React Native version mismatch,

但是引起这个问题的直接原因,却没有提示,目前我已经再两种情况下遇到了这个问题,我感觉有必要将这个坑记录下来,希望大家能够少走些弯路。

总结如下:

通常有两种情况下会遇到这个问题

1.第一种情况

也是比较常见的情况:有其他不同RN版本号的工程以开发模式运行,这时如果我们以 react-native run-android 运行我们自己想要调试的工程的话,会报这个错误。直观上看就是有其他运行 RN 工程的命令行窗口打开着,这时我们要做的就是关闭这些产生冲突的命令行窗口,问题就解决了。

2.第二种情况

第二种情况就是,我们在Android/iOS工程中配置的RN库版本与 JS工程中配置的RN库版本不一致时会出现这个问题。这种情况下,Android工程只需将 android/app/build.gradle 下的RN库默认配置从

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

改为:

compile ('com.facebook.react:react-native:0.54.3') { force = true } // 0.54.3 处变为自己的JS工程中的相应版本号
问题即可解决。

第二种情况通常事发比较突然,我今天遇到的就是第二种情况,当然第一种情况我也遇到过。。。第二种情况发生的原因就在于(以我个人遇到的情况举例)在 gradle 中没有明确配置版本号,而是用 '+' 来指定 react-native在 Android 端的 native 版本,'+' 的意思是,采用该库的最新版本。当我们建立工程的时候,自然是没有问题的,因为我们在用命令来建立工程时一般都是默认采用建立工程时的最新的RN的版本。在配置文件中这么写自然没毛病,但是如果我们的开发周期很长,那么这样的配置就可能会出现版本不匹配的问题。而且可能是突然出现。

第二种情况相较于第一种情况来说更加不常见,因为可能在我们的开发周期内,RN的Native版本库不一定会更新。但是正是因为不常见,排错的难度自然也水涨船高。

其实上面的两种情况在 https://stackoverflow.com/questions/47763824/react-native-version-mismatch 这个问题的答案中都已经有所体现。

OK,希望这篇文章能够帮助大家解决问题。谢谢。





你可能感兴趣的:(RN)