React Native Version Mismatch

时间:2017-12-12 00:54:57

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

在初始化新项目然后启动x-code模拟器时获取以下消息。 " React-Native Version Mismatch" Javascript版本0.50.1 原生版本:0.50.0

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

有谁知道这里发生了什么,可以帮助我吗?

谢谢!

enter image description here

46 个答案:

答案 0 :(得分:211)

这就是我用它做的事情:

  

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

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

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

答案 1 :(得分:21)

如果您使用create-react-native-app创建了您的react-native应用程序。你应该有一个app.json(世博会)。和package.json文件一样,检查expo版本是否匹配并相应更改。例如在我的情况下问题是在app.json文件中我有 expo sdkVersion属性的25.0.0版本,我将其更改为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
  }
}

答案 2 :(得分:15)

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

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

///可以在package.json

中找到react native版本

答案 3 :(得分:8)

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

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

为我工作

答案 4 :(得分:5)

我有这个问题的时间最长,上述解决方案都没有帮助。我正在升级create-react-native-app项目中的本地反应,直到我发现并非所有版本的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让所有内容重新运行。

答案 5 :(得分:5)

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

答案 6 :(得分:5)

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

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

0.51.0替换为package.json

中的版本

答案 7 :(得分:4)

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

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

答案 8 :(得分:3)

对于那些无法通过关闭和重建来解决问题的Android开发人员,请在模拟器/设备上手动卸载该应用。

答案 9 :(得分:2)

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

"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"
}

现在工作正常。

答案 10 :(得分:2)

这对我有用:

react-native start --reset-cache

答案 11 :(得分:2)

对于我来说,安装新的虚拟设备很有帮助。现在我每个应用使用1台设备。

答案 12 :(得分:2)

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

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

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

答案 13 :(得分:1)

就我而言,我在iOS上遇到了这个问题,尽管有很多评论说根本原因是React Packager意外运行,但我尝试使用以下命令重置和清除所有缓存,但也失败了重新启动了Mac,问题仍然存在。

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

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

答案 14 :(得分:1)

此答案发布于2020年, 通过3个步骤修复此错误:

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

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

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

现在您准备好了。

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

答案 15 :(得分:1)

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

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

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

答案 16 :(得分:1)

我正在使用物理设备,就我而言,这可以解决问题:

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

答案 17 :(得分:1)

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

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

此修复程序是通过运行cd ios && pod install来升级所有已安装的pod。

答案 18 :(得分:1)

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

答案 19 :(得分:1)

我也使用Expo和iOS模拟器来解决这个问题。对我有用的是在Hardware > Erase All Content and Settings...

中删除模拟器

答案 20 :(得分:1)

这意味着您忘了关闭旧的捆绑软件(nodejs终端),而该终端具有另一个React本机版本。

选项1:- 关闭所有终端,然后重新启动。

选项2:- react-native开始--reset-cache

选项3:- Killall节点。

选项4:- 重新启动系统。

答案 21 :(得分:1)

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

E.G react-nativedependencies中为0.61.5,而@types/react-nativedevDependencies中为0.60.0。

一旦我更新devDependencies,它就会起作用。不必重启任何东西。

答案 22 :(得分:0)

所有关于更改版本以匹配我认为错误的所有答案。

错误没有告诉您该版本的来源。搜索所有文件,我发现只有 1 个地方定义了 javascript 版本: 问题是捆绑包 (\android\app\src\main\assets\index.android.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,所有这些都不起作用,因为该特定包文件恰好在 Git 存储库中被跟踪。

>

答案 23 :(得分:0)

我将本机版本从0.57.4更新为0.59.8,并收到以下消息“本机版本不匹配”

此解决方案对我有用:

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...

希望对您有所帮助!

答案 24 :(得分:0)

就我而言,我手动更改了expo版本。我遇到了同样的问题,因为我忘记更新 app.json 中的 sdkVersion package.json中的 babel-preset-expo / strong>

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

答案 25 :(得分:0)

为您的JavaScript版本编辑package.json

"react-native": "^0.50.1",

运行后

npm install

答案 26 :(得分:0)

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

我从 yarn.lock 中删除了那个特定的 react-native 版本,并做了一个

yarn install

这清除了很多旧东西并确保一切正常。

答案 27 :(得分:0)

这对我有用

expo update 39.0.0 --npm

因为我的博览会版本是 38(检查 package.json)。

答案 28 :(得分:0)

对于我的问题,当更改 API 级别低于 28 的模拟器时解决此问题。这是由于 API 级别 28 及以上的网络更改造成的问题。通过添加解决此问题

<application
     android:usesCleartextTraffic="true"

到 androidManifest.xml

答案 29 :(得分:0)

我从 stackoverflow another question 找到了一个答案,我喜欢把它放在这里。

<块引用>

第一步:根据expo文档(visit here),我将package.json文件中expo的值改为最新支持的版本。

<块引用>

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

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

<块引用>

第三步:根据博览会文档(visit here),我将 package.json 文件中 react-native 的值更改为与 React Native Version 相同的值。

答案 30 :(得分:0)

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

答案 31 :(得分:0)

我已经尝试了上述解决方案,但是将其添加到 AndroidManifest.xml 似乎可以解决该问题。

  android:usesCleartextTraffic="true"

答案 32 :(得分:0)

我能够通过删除node_modules并再次运行npm install来解决此问题

答案 33 :(得分:0)

关闭nodejs终端并重建。

答案 34 :(得分:0)

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

答案 35 :(得分:0)

这将特别适用于Android Studio 3.2或更高版本的用户,因为升级之前似乎并没有发生。

如果您未在配置(package.jsonbuild.gradle)中更改React Native的版本,则版本不匹配的问题可能是由于检出另一项提交后未检测到对项目文件的更改而引起的在git中。要克服这一点,请确保:

  • 清理内部版本:Build > Clean Project

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

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

  • 最后运行/调试应用

这还将克服一旦从设备上卸载应用后由于即时运行而发生的Session 'app': Error Installing APK错误。

答案 36 :(得分:0)

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

watchman watch-del-all

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

brew install watchman

答案 37 :(得分:0)

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

package.json

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

和app.json

{
  "sdkVersion": "27"
}

解决了问题

答案 38 :(得分:0)

就我而言,我的Android物理设备未连接到在我的开发机上运行的js服务器。所以我必须在我的android设备上手动设置调试服务器的主机和端口。

答案 39 :(得分:0)

可能的解决方法:

  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

执行项目

这对我有用。

答案 40 :(得分:0)

打开projectdir / 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

答案 41 :(得分:0)

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

答案 42 :(得分:0)

我在构建针对android的本机应用程序时遇到了同样的问题,我做了以下哪些对我有用。

&#34; JavaScript版本0.50.1&#34;在错误控制台中是package.json文件中的react-native版本。确保它与&#34; Native version 0.50.0&#34;的版本相同在错误控制台中。

  1. 我已将react-native版本更新为&#34; Native Version 0.50.0&#34;根据错误控制台中的提示。
  2. 重建应用react-native run-android

答案 43 :(得分:0)

尝试将package.json中指定的react-native的版本(在依赖项 - react-native下)更改为&#39; Native Version&#39;显示在错误消息中。然后运行'npm install&#39;试。

答案 44 :(得分:0)

这不是一个修复,但在我的情况下,我的设备上安装了多个RN应用程序,并且我在不知不觉中试图从错误的应用程序中“重新加载”。 (我现在正在同时开发两个应用程序)所以请确保您使用的是正确的应用程序!

答案 45 :(得分:-1)

我更新了app.json中的SDK版本,使其与package.json中的react native SDK版本匹配,以解决此问题

在app.json中

"sdkVersion": "37.0.0",

在package.json中

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