ChatGPT解决这个技术问题 Extra ChatGPT

React Native 版本不匹配

想要改进这篇文章?提供这个问题的详细答案,包括引文和解释为什么你的答案是正确的。没有足够细节的答案可能会被编辑或删除。

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

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

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

https://i.stack.imgur.com/AKlW8.png


V
Val

这就是我所做的:

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

您可能忘记从另一个项目关闭 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
v
victoryoalli

如果您使用 create-react-native-app 创建了 react-native 应用程序。你应该有一个 app.json (expo)。和 package.json 文件,检查 expo 版本是否匹配并相应更改。例如,在我的情况下,问题是在 app.json 文件中我有一个 25.0.0 版本的 expo sdkVersion 属性,我将其更改为 23.0.0 并且一切正常。

包.json:

"dependencies": {
    "expo": "^23.0.4",
    "react": "16.0.0",
    "react-native": "^0.50.4"
  }

应用程序.json:

{
  "expo": {
    "sdkVersion": "23.0.0" // before was 25.0.0
  }
}

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

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

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

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


我在哪里更改 ios
package.json 中的等效变化是什么?
我知道这是一个旧答案,但不推荐使用“强制”。 (现在也编译了)
N
Nadun Liyanage

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


从IOS模拟器卸载应用程序对我有用。
N
Noitidart

只需在您的 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
M
Mark Amery

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

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

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


在撰写本文时,Expo 仅支持高达 59.8 的 react-native。对于 expo/react-native 兼容性,请参阅 docs.expo.io/versions/latest/sdk/overview/#sdk-version(它与 OP 的错误原因并不完全相同,但似乎需要注意。)
J
Jared Nelson

我以前从未见过这个错误,但每当我不能让 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 构建它。你已经这样做了吗?如果您需要帮助,请告诉我。
Y
Yatit Thakker

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


R
Ronan Boiteau

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

卸载应用 lsof -i :8081 kill -9 PID 重建应用(react-native run-android 或 react-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。工作了一个款待!
N
Nitish Phanse

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

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

0.51.0 替换为 package.json 中的版本


A
Aditi Gupta

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

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


S
Seyed Morteza Mousavi

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

现在它工作正常。


L
Luminita Balas

就我而言,安装新的虚拟设备会有所帮助。现在我每个应用程序使用 1 台设备。


c
civani mahida

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

对于我的情况,我在 iOS 上遇到了它,我尝试使用以下命令重置和清除所有缓存但也失败了,尽管许多评论说根本原因是反应打包程序意外运行在某个地方,我已经重新启动我的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解决了


k
ketimaBU

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

  android:usesCleartextTraffic="true"

它就像魅力一样。这就是我永远不会喜欢安卓的原因。总有一个神奇的词可以解决你的问题,这让你疯狂了好几个小时。
这次它对我有用。
b
brkn

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

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

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


a
ascripter

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


谢谢!这是新的世博会用户的解决方案。
M
Mark Amery

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

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

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

P
Parveen Chauhan

这对我有用:

react-native start --reset-cache

F
Ferhat KOÇER

为您的 javascript 版本编辑您的 package.json

"react-native": "^0.50.1",

跑完之后

npm install

c
catico

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


我很确定这可以通过从模拟器中卸载 Expo 应用程序来完成。一切都不需要。
A
Anand Yadav

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

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

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


A
Alejo

可能的修复:

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

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

这对我有用。


A
Ajitsen

在我的情况下(不使用博览会和 Android 构建)

包.json

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

和 app.json

{
  "sdkVersion": "27"
}

解决了这个问题


如果您使用 Expo,尤其如此。查看 Expo 的升级文档以了解更多信息:docs.expo.io/versions/latest/workflow/…
f
friederbluemle

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

watchman watch-del-all

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

brew install watchman

G
Giang Phan

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

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


s
sina

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

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

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

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

现在你准备好了。

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


谢谢!这对我有用 18/06/20 - 我使用 SDK 版本 38 进行步骤 1 & 2,然后是“react-native”:“github.com/expo/react-native/archive/sdk-38.0.1.tar.gz”,用于第 3 步
T
Thomas Hagström

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

EG react-nativedependencies 中的 0.61.5 和 @types/react-nativedevDependencies 中的 0.60.0。

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


v
vonGohren

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

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

yarn install

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