React原生版本不匹配

当我初始化一个新项目,然后启动Xcode模拟器时,得到以下消息:

React-Native版本不匹配

Javascript版本0.50.1 原生版本:0.50.0

确保您已经重新构建了本机代码. ...

有谁知道这是怎么回事能帮帮我吗?

 ></a></p>
                    </div>
                                            <ul class=

  • react-native
  • react-native-ios
  • 193519 次浏览

    我以前从未见过这个错误,但每当我不能让Xcode和React-Native一起玩得很好,我做了几件事。检查我使用的Xcode版本。如果需要更新,我就更新。我要去的第二个地方是清理守夜人和藏身处。我没有使用reset cache命令。它总是说我需要验证缓存,所以我跳过了(你可以这样做,我只是感到困惑)。我使用rm -rf $TMPDIR/react-*来删除任何缓存的构建。如果这不起作用,我尝试在Xcode中构建应用程序,然后从那里开始工作,用react-native run-ios构建它。对于这个错误消息,似乎你可以开始尝试用Xcode构建它。希望这对你有所帮助……让我知道你的进展。好运!(此外,您可以更新到RN 0.51作为另一种尝试,使您的版本同步。)

    这是我对它所做的:

    关闭所有终端并再次运行构建。

    你可能忘记从另一个项目关闭nodejs终端,而他们碰巧安装了不同的react版本。

    因此,从nodejs服务器获取的代码与本机代码冲突。

    如果你通过Expo运行React Native应用程序,升级React Native很容易导致这个错误(如https://github.com/expo/expo/issues/923所述)。

    如果这是你的情况,你的选择是:

    1. Bump Expo(在你的package.json中列出)到一个与你的React Native版本兼容的版本(如果存在,这可能不是情况-根据链接的问题判断,我认为Expo支持落后于React Native版本)。
    2. 放弃你的更改,删除并重新安装你的Node模块,从Expo中喷射,然后(在检查你仍然可以在弹出后运行你的应用程序后)再次尝试升级。

    对于在iOS上使用CocoaPods遇到同样问题的其他人:

    我尝试了上面所有的解决方案,但运气不佳。我在我的项目中有一些本地依赖的包,其中一些需要的pod模块正在安装。问题是React是在我的Podfile中指定的,但是React pod没有通过使用react-native-git-upgrade自动升级。

    修复方法是通过运行cd ios && pod install来升级所有已安装的pods。

    如果你用create-react-native-app创建react-native-app。你应该有一个app.json (expo)。还有一个包裹。Json文件,检查世博版本是否匹配并相应更改。例如,在我的案例中,问题是在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
    }
    }
    

    对于那些无法通过关闭和重建来修复的Android开发人员,在模拟器/设备上手动卸载应用程序。

    我们所做的修正是确保在构建之前设置ANDROID_HOME和PATH变量。

    首先,运行以下两个命令,然后为设备构建应用程序。

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

    我有这个问题很长一段时间了,上面的解决方案都没用。我在一个create-react-native-app项目中升级react native,直到我发现不是所有版本的Expo都支持最新的react native。

    在文档中找到了这个页面的链接,其中显示了官方支持的React Native, React和Expo的版本组合:

    来源:https://github.com/react-community/create-react-native-app/blob/master/VERSIONS.md

    编辑app.jsonpackage.json文件以匹配相应的版本并运行npm install使一切重新工作。

    我在使用Expo和iOS模拟器时也遇到了这个问题。对我有用的是擦除Hardware > Erase All Content and Settings...中的模拟器

    这不是一个解决方案,但在我的情况下,我在我的设备上安装了多个RN应用程序,我不知情地试图从错误的应用程序中“重新加载”。(我正在同时开发两个应用程序)所以确保你在正确的应用程序!

    在你的构建中。Gradle文件添加以下内容

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

    用package.json中的版本替换0.51.0

    在你的android的应用级gradle文件中,在dependencies部分强制react原生版本。

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

    为我工作

    只需转到你的android/app/build.gradle,然后添加到dependencies部分:

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

    /// react的原生版本可以在package.json中找到

    尝试更改包中指定的react-native版本。将json(在dependencies - react-native下)改为与错误消息中显示的“Native Version”相同。然后再次运行'npm install'。

    我有同样的问题,而建立我的react原生应用程序的android和我做了以下工作。

    错误控制台中“JavaScript版本0.50.1”是package.json文件中的react-native版本。确保它与错误控制台中“本机版本0.50.0”的版本相同。

    1. 我已经在错误控制台中按照提示将react-native版本更新为“Native version 0.50.0”。
    2. 重建应用react-native run-android

    对我来说,这是由于package.json文件的dependency部分中的react-native版本。它是:

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

    我把它改成:

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

    现在它工作得很好。

    还要确保在模拟器中启用了wifi

    在我的案例中,安装一个新的虚拟设备有所帮助。现在我每个应用程序使用一个设备。

    我正在使用物理设备,在我的情况下,这解决了问题:

    1. 卸载应用程序
    2. lsof -i :8081
    3. kill -9 PID
    4. 重建应用程序(react-native run-androidreact-native run-ios)

    尝试重新安装依赖项。这对我很管用

    < p > 1) yarn/npm install < br > 2.) yarn/npm start --reset-cache

    Opene管理扫描/ android / app / build.gradle

    试一试:

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

    < p >代替 编译"com.facebook.react:react-native:0.51.0" {force = true}

    裁判:链接

    可能的解决办法:

    1. 删除package-lock.json
    2. 运行: watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/haste-map-react-native-packager-* && rm -rf node_modules/&& npm install

    如果问题仍然存在,尝试直接从< em > Xcode < / em >执行项目

    这对我很管用。

    在我的情况下,我的android物理设备没有连接到运行在我的开发机器上的js服务器。所以我必须手动设置调试服务器主机&移植到我的android设备上。

    在我的情况下(不使用expo &Android构建)

    package.json

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

    和app.json

    {
    "sdkVersion": "27"
    }
    

    解决问题

    我试图从WebStorm中构建和运行一个React Native应用程序,然后遇到了这个问题。对我来说,简单的解决方案是:

    watchman watch-del-all
    

    在macOS上,如果尚未安装watchman,则使用家酿安装它:

    brew install watchman
    

    这尤其适用于Android Studio 3.2或更新的用户,因为这在升级之前似乎没有发生。

    如果你没有在你的配置中更改React Native的版本(package.jsonbuild.gradle),版本不匹配的问题可能来自于在git中检出另一个提交后对项目文件的未检测到的更改。要克服这个问题,请确保:

    • 清理构建:Build > Clean Project

    • 用Gradle文件同步项目:在导航栏的Stop按钮旁边

    • 制作项目:导航栏中第一个带有锤子图标的按钮

    • 最后运行/调试应用程序

    这也将克服Session 'app': Error Installing APK错误,可能发生由于即时运行,一旦应用程序从设备上卸载。

    Expo用户-确保你的app.json sdk版本和package.json Expo版本彼此兼容(可能相等)。

    当你试图在不关闭节点服务器的情况下运行前一个应用程序时,有时会发生这种情况,所以尝试重新启动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
    

    对于我的情况下,我在iOS上面临它,我试图重置和清除所有缓存使用以下命令,但失败了,尽管许多评论说,根本原因是有react打包器在某处意外运行,我重新启动了我的mac,问题仍然存在。

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

    解决方案是,删除构建文件夹@ /ios/build,然后执行react-native run-ios解决它

    关闭nodejs终端,重新构建。

    我可以通过删除node_modules并再次运行npm install来修复这个问题

    我已经尝试了上面的解决方案,但将此添加到AndroidManifest.xml似乎可以修复它。

      android:usesCleartextTraffic="true"
    

    我更新了react-native版本:0.57.4到0.59.8,我得到以下消息“react-native版本不匹配”

    这个解决方案对我来说很有效:

    1.- In the folder of the project, update all the code react-native in the Android Studio:
    
    
    react-native bundle --platform android --dev false --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res/
    
    
    2.- Go to Android Studio and FILE->>INVALIDATE CACHES/RESTART
    3.- In Android Studio, BUILD->>CLEAN PROJECT
    4.- In Android Studio, BUILD->>REBUILD PROJECT
    5.- Delete App in simulator or Devices
    6.- Run...
    

    希望对大家有所帮助!

    在我的例子中,我手动更改了expo版本。我得到了同样的问题,因为我忘记更新app.json中的sdkVersionpackage.json中的babel-preset-expo

    之后运行:expo r -c清除缓存并启动应用程序。

    这个答案发表于2020年, 3步修复此错误:

    第一步:根据expo文档(访问在这里),我将package.json文件中的expo的值更改为最新支持的版本。

    第二步:我将app.json文件中的sdkVersion的值更改为package.jsonexpo的相同值。(与上一步数量相等)。

    第三步:根据expo文档(访问在这里),我将package.json文件中的react-native的值更改为React Native Version的相同值。

    现在你可以出发了。

    使用npm install来安装指定版本的依赖项,然后使用npm start来运行项目

    这对我来说很管用:

    react-native start --reset-cache
    

    当TypeScript类型定义不匹配时,我得到了这个类。

    例:react-nativedependencies中为0.61.5,@types/react-nativedevDependencies中为0.60.0。

    当我更新devDependencies时,它就工作了。不需要重启任何东西。

    我更新了app.json中的SDK版本,以匹配包中的react原生SDK版本。Json来修复这个问题

    在app.json

    "sdkVersion": "37.0.0",
    

    在package.json

    "react-native": "https://github.com/expo/react-native/archive/sdk-37.0.1.tar.gz",
    

    编辑您的包。Json为你的javascript版本

    "react-native": "^0.50.1",
    

    后运行

    npm install
    

    所有那些关于改变版本以适应我的错误的答案。

    错误没有告诉你这个版本来自哪里。在所有文件中搜索,我发现只有1个地方定义了javascript版本: 问题是bundle (\android\app\src\main\assets\index.android.bundle)需要重新生成,因为与已安装的bundle相比,它包含较旧的版本

    为了重新生成该文件,我必须运行以下命令:

    react-native bundle --platform android --entry-file index.js --bundle-output android/app/src/main/assets/index.android.bundle --assets-dest android/app/src/main/res
    

    因为我已经升级了我的react-native,所以运行这个命令给了我一些需要解决的错误(主要是安装新的依赖项)。

    清理缓存,在android studio中重新加载,重新加载react,重新加载终端,创建一个新项目并传输文件,运行watchman,所有这些都不能工作,因为特定的bundle文件恰好在Git repo中被跟踪。

    对于使用monorepo运行的我来说,在yarn.lock中有一个隐藏的react-native版本。它不存在于任何包装中。Json,但从未被删除。

    我从yarn中删除了特定的react-native版本。锁上,又做了一个

    yarn install
    

    这清理了很多旧的东西,并确保一切正常工作。

    这对我很有效

    expo update 39.0.0 --npm

    因为我的expo版本是38(Check in package.json)。

    我从Stackoverflow,另一个问题找到了一个答案,我喜欢把它放在这里。

    第一步:我改变了expo在package中的值。根据expo documents(访问),将json文件转换为最新支持的版本。

    第二步:我将app.json文件中的sdkVersion的值更改为package.json中expo的值。(与上一步数量相等)。

    如果你的app.json文件中不存在sdkVersion,请像这样添加它。 "sdkVersion": "xx.x.x"(与package.json中的expo版本相同)

    第三步:我在包中改变了react-native的值。根据expo documents(访问),将json文件设置为与React Native Version相同的值。

    从设备上删除应用程序,然后重新安装

    对于我的问题修复此更改模拟器与API级别低于28。这个问题的根源是API级别28及以上的网络变化。通过添加来解决这个问题

    <application
    android:usesCleartextTraffic="true"
    

    对androidManifest.xml

    我在手动更新我的包后遇到了这个问题。 从Expo Go应用程序而且中删除所有运行expo update的项目会自动为我解决问题
    对我来说,我不得不为react native打开多个node js终端,并且在运行应用程序到我的android设备之前忘记关闭。 我关闭终端,再次运行,它成功加载页面

    安装一个新的模拟器和关闭所有终端,只在我从Android Studio运行时才适用。现在已经不管用了。

    有点违反直觉,但我注意到,当我从Android Studio运行时,地铁捆绑终端没有启动。

    enter image description here

    所以我从终端执行npx react-native run-android(这没有工作,但它确实启动地铁捆绑器),然后我从Android工作室运行该应用程序,它工作!

    enter image description here

    关闭js服务器终端,再次运行build