在 iOS 模拟器中运行 React Native 应用程序时找不到 UMModuleRegistryAdapter.h

Posted

技术标签:

【中文标题】在 iOS 模拟器中运行 React Native 应用程序时找不到 UMModuleRegistryAdapter.h【英文标题】:UMModuleRegistryAdapter.h not found when running React Native app in iOS simulator 【发布时间】:2019-06-25 00:20:37 【问题描述】:

我有一个简单的 React Native 应用程序,我一直在 android 上进行测试,现在想在 ios 上进行测试。它正在使用 React Navigation。

我运行了npm run ios,但出现以下错误:

info In file included from 

/Users/rbbit/reactnative/testproj1/ios/testproj1/main.m:10:

/Users/rbbit/reactnative/testproj1/ios/testproj1/AppDelegate.h:9:9: fatal error: 'UMReactNativeAdapter/UMModuleRegistryAdapter.h' file not found

#import <UMReactNativeAdapter/UMModuleRegistryAdapter.h>
        ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

info 1 error generated.

我打开了 XCode,但基本上得到了相同的消息,没有其他可以帮助我调试的。

我确实看到有一个名为 react-native-adapter (https://github.com/expo/expo/tree/master/packages/%40unimodules/react-native-adapter) 的包,但是我很犹豫是否要安装它,因为我遵循了有关如何包含 react-navigation 的说明并且没有提及,假设这是相关的。

此外,该页面显示If you are using react-native-unimodules, this package will already be installed and configured!,并且react-native-unimodules 已经在我的依赖项中。

关于如何解决这个问题的任何指示?谢谢!

【问题讨论】:

【参考方案1】:

对于最新的 RN 版本 (RN 0.60+),应该使用自动链接来修复此类错误,并且只需运行 pod install

对于旧版本,您应该尝试:

react-native link 在项目的根文件夹中

然后在Xcode Product-&gt;Clean Build文件夹中,重启JS服务器并尝试重建。

如果仍然无法正常工作,请从此处仔细检查配置:

https://github.com/unimodules/react-native-unimodules

和来自这里的App.delegate: https://gist.github.com/brentvatne/1ece8c32a3c5c9d0ac3a470460c65603

来源:

Pod 安装提醒是 Sandy 在下面的评论中首先提出的

【讨论】:

嗨弗洛林! react-native link 没有修复它。另外,我的 XCode 项目中根本没有 pod 文件(正如您包含的链接中所预期的那样)。有没有可能有一个完全没有 Cocoapods 的 XCode 项目? 其实我正要创建一个Podfile,发现它存在,但是被隐藏了。因此,按照链接中的步骤进行操作。谢谢 是的,可以有一个没有任何 CocoaPods 的项目。我很高兴这些步骤奏效了。 :) 对于遇到此问题的任何人,缺少的是运行pod install 我必须安装 cocoapods(参见 cocoapods.org),然后是 cd ios; pod install。我相信现在反应原生通常不需要 cocoapods,但如果您使用任何使用 react-native-unimodules 的模块(例如 react-navigation),那么它是必需的。【参考方案2】:

pod install 在我将这些行添加到我的 pod 文件之前对我不起作用:

require_relative '../node_modules/react-native-unimodules/cocoapods.rb'

use_unimodules!(modules_paths: ['../node_modules'])

然后做一个pod install

示例:https://gist.github.com/sjchmiela/6c079f2173938a9a61a7c6f053c45000

【讨论】:

你做到了,先生 确实做到了,但要知道 react-native-unimodules 自 2021 年 10 月起已被弃用。来源:blog.expo.dev/…【参考方案3】:

在一个已经工作了几个月的项目上,在一个已经工作了几个月的项目上,我在正确配置的所有内容、其他答案中的所有内容以及所有 unimodules installation steps 已经完成的情况下遇到了完全相同的错误,并在新计算机上构建它。原来是因为我只是在 xCode 中使用了错误的文件。

我本应打开并运行 .xcworkspace 文件的构建,但我已经打开了 .xcodeproj 文件。

除了这个错误之外,一切似乎都正常工作,这使它看起来像是配置问题,而不是简单的“您打开了错误的文件”问题。希望如果其他人犯了同样的错误,这将为他们节省几个小时徒劳的修修补补。

【讨论】:

以上是关于在 iOS 模拟器中运行 React Native 应用程序时找不到 UMModuleRegistryAdapter.h的主要内容,如果未能解决你的问题,请参考以下文章

运行 react-native run-ios 就成功了。但不启动模拟器

react-native:有没有同时运行iOS模拟器和Android模拟器的方法?

如何在 react-native 中重置 IOS 文件夹

在 iOS 模拟器上运行 React Native 应用程序时诊断进程的高 CPU 负载

在iOS模拟器上运行React Native应用程序时,诊断过程的CPU负载很高

react-native IOS应用程序未在模拟器中显示资产