React Native版本不匹配


195

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

React-Native版本不匹配

Javascript版本0.50.1本机版本:0.50.0

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

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

Answers:


335

这是我所做的:

关闭所有终端,然后再次运行build。

您可能会忘记从另一个项目中关闭nodejs终端,而它们恰好安装了不同的react版本。

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


1
如果我不想关闭当前打开的终端(我正在那里运行应用程序)怎么办?还有其他解决方法吗?
迪米塔尔·特松涅夫'18 -4-24

1
@DimitarTsonev您可以关闭由react-native打开的特定终端,该终端显示Bundling 'index.android.js' 100.0% (1/1), done
Val

1
build.gradle工作中完全使用react依赖版本。谢谢@Val
杰克·

关闭所有终端并使用:react-native run-ios
Steffo Dimfelt

pod install如果使用cocoapods,也可以运行。
阵列

37

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

这对我有用!快速更新:您可能不对本机包使用直接的npm模块,而是使用了压缩包。在这种情况下,您可以使用反应本地状态来验证您的RN版本。:)
blakeface '18

15

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

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

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


5
我在哪里更改ios
Anurag Shrivastava

package.json中的等效更改是什么?
Nate Glenn

8

只需在该dependencies部分的Android应用级gradle文件中强制响应本机版本即可。

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

为我工作


2
这对我有用。我有0.53.3。我添加了0.53.3的力,重新启动了终端,然后npm start -- --reset-cache又跑了react-native run-android
Florin Dobre

6

我以前从未见过此错误,但是每当我无法让Xcode和React-Native一起玩得很好时,我都会做一些事情。检查我使用的Xcode版本。如果需要更新,请更新。然后清除看守和缓存是我要去的第二个地方。我不使用reset cache命令。它总是说我需要验证缓存,因此我跳过了这一点(尽管可以做到,但是我很困惑)。我使用rm -rf $ TMPDIR / react- *摆脱任何缓存的版本。如果那不起作用,我尝试在Xcode中构建该应用程序,然后从那里开始,使用react-native run-ios进行构建。出现此错误消息后,您似乎可能开始尝试使用Xcode进行构建。希望能对您有所帮助...让我知道您的进度。祝好运!(此外,您可以更新到RN 0。


另一件事是我参加了博览会。想知道这是否使事情搞砸了
山姆饶

您可以只执行npm install --save react-native@0.51但是,我会先尝试使用Xcode进行构建。你做完了吗?如果您需要帮助,请告诉我。
杰瑞德·纳尔逊

6

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

如果您的情况是这样,则可以选择:

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

撰写本文时,Expo仅支持本机,最高支持59.8。有关expo / react-native的兼容性,请参阅docs.expo.io/versions/latest/sdk/overview/#sdk-version (它与OP并非完全相同的错误原因,但似乎需要注意。)
Tijs Maas

6

我遇到这个问题的时间最长,上述解决方案均无济于事。我正在升级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所有功能重新运行。


6

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

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

lsof -i :8081在iOS Simulator上,只需杀死所有PID 并进行重建即可。
罗南·波多

此处相同-尝试过Rimraf node_modules,npm start-重置缓存等-没有任何效果。然后我按照上面的方法做-卸载应用程序,使用taskkill / im node.exe和taskkill / f / PID(在最后一步中给出的现有PID的编号),然后使用本机运行Android。工作请客!
user1641906

5

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

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

替换0.51.0为package.json中的版本



4

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

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


3

对我来说,这是由于文件部分中的react-native版本。它是:dependencypackage.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"
}

现在工作正常。


3

就我而言,我在iOS上遇到了问题,并且我尝试使用以下命令重置和清除所有缓存,但也失败了,尽管有很多评论说根本原因是反应打包程序意外在某处运行,但我已经重新启动我的Mac和问题仍然存在。

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

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


3

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

  android:usesCleartextTraffic="true"

1
它像魅力一样运作..这就是我永远不会喜欢android的原因。总有一个神奇的词可以解决您的问题,这使您疯狂了许多小时。
picacode

2

对于使用CocoaPods在iOS上存在相同问题的其他用户:

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

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




1

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


我非常确定,只需从模拟器中卸载Expo应用程序即可完成此操作。不需要一切。
阿贾伊

1

可能的修复:

  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

这对我有用。



1

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

watchman watch-del-all

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

brew install watchman

1

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

1

就我而言,我expo手动更改了版本。我得到了同样的问题,因为我忘了更新sdkVersionapp.json巴贝尔预设博览会的package.json

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


1

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

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

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

1

当TypeScript类型定义不匹配时,我得到了此类信息。

EG react-native在0.61.5 in dependencies@types/react-native0.60.0 indevDependencies

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


0

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


0

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


任何想法如何降级到package.json中提到的版本?
HungrySoul

在package.json中,您应该在“依赖项”下看到类似“ react-native”的内容:“ ^ 0.55.0”。将该数字(在本示例中为0.55.0)更改为所需的版本,然后再次运行“ npm install”。
Pnar Sbi Wer

0

在为Android构建本机应用程序时遇到了同样的问题,我做了以下对我有用的事情。

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

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


0

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

参考: 链接

By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.