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

React-Native版本不匹配 Javascript版本0.50.1 本机版本:0.50.0 确保您已经重新构建了本机代码. ...

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


I've never seen this error before, but whenever I can't get Xcode and React-Native to play well together, I do a couple of things. Check what version of Xcode I'm working with. If it needs to be updated, I update it. Then clearing watchman and the cache are the second place I go. I don't use the reset cache command. It always says that I need to verify the cache, so I skip that (you can do it though, I just get confused). I use rm -rf $TMPDIR/react-* to get rid of any cached builds. If that doesn't work, I try to build the app in Xcode, then work my way from there, to build it with react-native run-ios. With this error message, it seems you might start by trying to build it with Xcode. Hope that helps...let me know your progress with it. Good luck! (Also, you could update to RN 0.51 as another attempt to get your versions synced.)


这是我对它所做的:

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

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

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


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

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

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


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

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

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


如果你用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.json和包。Json文件来匹配相应的版本,运行NPM install可以让一切恢复正常。


我在使用Expo和iOS模拟器时也遇到了这个问题。对我有用的是擦除硬件中的模拟器>擦除所有内容和设置…


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


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

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

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


在你的android应用级别的gradle文件中,在依赖项中强制react原生版本。

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

为我工作


只要去你的android/app/build。Gradle,然后添加到依赖项部分:

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”是包中的react-native版本。json文件。确保它与错误控制台中“本机版本0.50.0”的版本相同。

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


对我来说,这是由于包的依赖项部分的反应本机版本。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"
}

现在它工作得很好。


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


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


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

卸载应用程序 Lsof -i:8081 kill -9 PID 重新构建应用程序(react-native run-android或react-native run-ios)


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

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


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

试一试:

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

而不是 编译"com.facebook.react:react-native:0.51.0" {force = true}

裁判:链接


可能的解决办法:

删除package-lock.json 执行命令watchman watch-del-all && rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/ hurry -map-react-native-packager-* && rm -rf node_modules/&& npm install

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

这对我很管用。


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


在我的情况下(不使用博览会和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还没有安装,请使用Homebrew安装:

brew install watchman

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

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

清洁构建:构建>清洁项目 用Gradle文件同步项目:在导航栏上的“停止”按钮旁边 制作项目:导航栏中第一个带有锤子图标的按钮 最后运行/调试应用程序

这也将克服会话“应用程序”:错误安装APK错误,可能发生由于即时运行,一旦应用程序从设备上卸载。


博览会用户-确保您的app.json sdk版本和包。Json的博览会版本是(可能相等)彼此兼容。


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

解决方案是,删除build文件夹@ /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中的sdkVersion和package.json中的babel-preset-expo

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


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

第一步:我改变了expo在package中的值。Json文件到最新支持的版本,根据博览会文档(访问这里)。

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

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

现在你可以出发了。

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


这对我来说很管用:

react-native start --reset-cache

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

例如,在依赖项中react-native的值为0.61.5,在devDependencies中@types/react-native的值为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版本: 问题是这个包(\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,所有这些都不能工作,因为特定的bundle文件恰好在Git repo中被跟踪。


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

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

yarn install

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


这对我很有效

博览会更新39.0.0 -npm

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


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

第一步:我改变了expo在package中的值。Json文件到最新支持的版本,根据博览会文档(访问这里)。

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

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

第三步:我在包中改变了react-native的值。根据expo文档(请访问这里),将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运行时,地铁捆绑终端没有启动。

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


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