【问题标题】:React Native version mismatchReact Native 版本不匹配
【发布时间】:2018-05-25 14:51:50
【问题描述】:

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

React-Native 版本不匹配

Javascript 版本 0.50.1 本机版本:0.50.0

确保您已重建本机代码。 ...

有人知道这里发生了什么并且可以帮助我吗?

【问题讨论】:

    标签: react-native react-native-android react-native-ios


    【解决方案1】:

    我以前从未见过此错误,但每当我无法让 Xcode 和 React-Native 很好地协同工作时,我都会做一些事情。检查我正在使用的 Xcode 版本。如果它需要更新,我会更新它。然后清除守望者和缓存是我去的第二个地方。我不使用重置缓存命令。它总是说我需要验证缓存,所以我跳过它(你可以这样做,我只是感到困惑)。我使用 rm -rf $TMPDIR/react-* 来删除任何缓存的构建。如果这不起作用,我尝试在 Xcode 中构建应用程序,然后从那里开始使用 react-native run-ios 构建它。有了这个错误消息,您似乎可以从尝试使用 Xcode 构建它开始。希望对您有所帮助...让我知道您的进度。祝你好运! (此外,您可以更新到 RN 0.51 作为另一个尝试同步您的版本。)

    【讨论】:

    • 另一件事是我玩过世博会。想知道这是否把事情搞砸了
    • 你可以只做 npm install --save react-native@0.51 但是,我会先尝试用 Xcode 构建它。你已经这样做了吗?如果您需要帮助,请告诉我。
    【解决方案2】:

    这就是我所做的:

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

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

    所以从nodejs服务器获取的代码与本机的冲突。

    【讨论】:

    • 如果我不想关闭我当前打开的终端(我有应用程序在那里运行)怎么办?还有其他解决方法吗?
    • @DimitarTsonev 您可以关闭由 react-native 打开的特定终端,显示 Bundling 'index.android.js' 100.0% (1/1), done
    • 强制完全使用 build.gradle 中的反应依赖版本工作。谢谢@Val
    • 关闭所有终端并使用:react-native run-ios
    • 如果你正在使用 cocoapods,也可以运行 pod install
    【解决方案3】:

    如果您通过 Expo 运行 React Native 应用程序,升级 React Native 可能会导致此错误(如 https://github.com/expo/expo/issues/923 所述)。

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

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

    【讨论】:

    【解决方案4】:

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

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

    解决方法是通过运行 cd ios && pod install 升级所有已安装的 pod。

    【讨论】:

      【解决方案5】:

      如果您使用 create-react-native-app 创建了 react-native 应用程序。你应该有一个 app.json (expo)。和 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
        }
      }
      

      【讨论】:

      • 这对我有用!快速更新:您可能不会对 react-native 包使用直接 npm 模块,而是使用 tarball。如果是这种情况,您可以使用 react-native status 来验证您的 RN 版本。 :)
      【解决方案6】:

      对于仅通过关闭和重建无法修复的 Android 开发者,请手动卸载模拟器/设备上的应用。

      【讨论】:

      • 从 IOS 模拟器卸载应用程序对我有用。
      【解决方案7】:

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

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

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

      【讨论】:

        【解决方案8】:

        我遇到这个问题的时间最长,以上解决方案都没有帮助。我正在一个 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 使一切恢复正常。

        【讨论】:

          【解决方案9】:

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

          【讨论】:

          • 我很确定这可以通过从模拟器中卸载 Expo 应用程序来完成。什么都不需要。
          【解决方案10】:

          这不是解决方法,但就我而言,我的设备上安装了多个 RN 应用程序,并且我在不知不觉中尝试从错误的应用程序中“重新加载”。 (我目前正在同时开发两个应用程序)所以请确保您使用的是正确的应用程序!

          【讨论】:

            【解决方案11】:

            在您的 build.gradle 文件中添加以下内容

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

            0.51.0 替换为您的 package.json 中的版本

            【讨论】:

              【解决方案12】:

              只需在您的 android 应用级别 gradle 文件中的 dependencies 部分中强制反应原生版本。

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

              为我工作

              【讨论】:

              • 这对我有用。我有 0.53.3。我用 0.53.3 添加了一个力,重新启动终端,运行 npm start -- --reset-cache 并运行 react-native run-android
              【解决方案13】:

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

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

              /// react native 版本可以在 package.json 中找到

              【讨论】:

              • 我在哪里更改 ios
              • package.json 中的等效变化是什么?
              • 我知道这是一个旧答案,但“强制”并未被弃用。 (现在也实现了编译)
              【解决方案14】:

              尝试将 package.json 中指定的 react-native 版本(在依赖项 - react-native 下)更改为与错误消息中显示的“本机版本”相同。然后再次运行“npm install”。

              【讨论】:

              • 知道如何降级到 package.json 中提到的版本吗?
              • 在您的 package.json 中,您应该在“依赖项”下看到类似“react-native”:“^0.55.0”的内容。将该数字(本例中为 0.55.0)更改为您想要的版本并再次运行“npm install”。
              【解决方案15】:

              我在为 android 构建我的 react 本机应用程序时遇到了同样的问题,我做了以下对我有用的操作。

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

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

              【讨论】:

                【解决方案16】:

                对我来说,这是由于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"
                }
                

                现在可以正常使用了。

                【讨论】:

                  【解决方案17】:

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

                  【讨论】:

                    【解决方案18】:

                    在我的情况下,安装新的虚拟设备会有所帮助。现在我每个应用使用 1 台设备。

                    【讨论】:

                      【解决方案19】:

                      我使用的是物理设备,就我而言,这解决了问题:

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

                      【讨论】:

                      • 只需从lsof -i :8081 中杀死所有 PID 并在 iOS 模拟器上为我进行重建。
                      • 这里也一样 - 尝试了 Rimraf node_modules、npm start -reset-cache 等 - 没有任何效果。然后我按照上面的操作 - 卸载应用程序,使用 taskkill /im node.exe 和 taskkill /f /PID(上一步中给出的数字,现有 PID),然后 react-native run-android。辛苦了!
                      【解决方案20】:

                      尝试再次安装依赖项。这对我有用 -

                      1.) yarn/npm install
                      2.) yarn/npm start --reset-cache

                      【讨论】:

                        【解决方案21】:

                        打开项目目录/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

                        【讨论】:

                          【解决方案22】:

                          可能的修复:

                          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

                          如果问题仍然存在,请尝试直接从 Xcode

                          执行 项目

                          这对我有用。

                          【讨论】:

                            【解决方案23】:

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

                            【讨论】:

                            • adb reverse tcp:8081 tcp:8081 帮助了我 :)
                            【解决方案24】:

                            就我而言(不使用 expo 和 Android 构建)

                            package.json

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

                            还有 app.json

                            {
                              "sdkVersion": "27"
                            }
                            

                            解决了问题

                            【讨论】:

                            【解决方案25】:

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

                            watchman watch-del-all
                            

                            在 macOS 上,如果尚未安装 watchman,请使用 Homebrew 安装它:

                            brew install watchman
                            

                            【讨论】:

                              【解决方案26】:

                              这尤其适用于 Android Studio 3.2 或更高版本的用户,因为在升级之前似乎不会发生这种情况。

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

                              • 清理构建:Build > Clean Project

                              • 将项目与 Gradle 文件同步:导航栏上的 Stop 按钮旁边

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

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

                              这也将克服在从设备上卸载应用后由于 Instant Run 而可能发生的Session 'app': Error Installing APK 错误。

                              【讨论】:

                                【解决方案27】:

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

                                【讨论】:

                                • 谢谢!这是新的 expo 用户的解决方案。
                                【解决方案28】:

                                当你尝试在不关闭之前运行的节点服务器的情况下运行时,有时会发生这种情况,因此请尝试重新启动 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
                                

                                【讨论】:

                                • 运行这个命令也适用于我“killall node”
                                【解决方案29】:

                                对于我的情况,我在 iOS 上遇到它,我尝试使用以下命令重置和清除所有缓存但也失败了,尽管许多 cmets 说根本原因是反应打包程序意外运行在某个地方,我'已经重新启动了我的mac,问题仍然存在。

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

                                解决办法是,删除build文件夹@/ios/build,然后执行react-native run-ios就解决了

                                【讨论】:

                                  【解决方案30】:

                                  关闭 nodejs 终端并重新构建。

                                  【讨论】:

                                  猜你喜欢
                                  • 2019-01-14
                                  • 2023-03-09
                                  • 1970-01-01
                                  • 2023-03-08
                                  • 2019-01-13
                                  • 1970-01-01
                                  • 1970-01-01
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多