找不到“ RCTBundleURLProvider.h”文件-AppDelegate.m


124

我正在尝试在XCode中运行我的React Native应用程序,但我一直收到此错误。我不知道如何解决该问题。有什么建议?

XCode中的错误的屏幕截图:

屏幕截图


我建议在应用任何更改之前,先清理您的项目并尝试运行它,因为在我的情况下也会发生同样的事情。我只是清理我的项目并运行它即可。
— bittu

您绝对应该更改正确的答案!@mark的答案是正确的答案,每个人都为此而来。
— SerdarDeğirmenci,

Answers:


64

删除节点模块,然后运行npm install(或更好地执行),在所有内容下载完成后,运行react-native upgrade该命令,您可以选择使用模板文件替换旧文件,方法是将本机依赖项重新链接到react-native应该解决您的问题。当然,不要忘记用Xcode清理项目。


5
您可以使用基于Git的新升级工具,因为它会自动解决冲突。运行“ npm install -g react-native-git-upgrade”,然后运行“ react-native-git-upgrade”。
— –bitsand,2017年

2
我遵循了建议,但没有。.我有本机版本0.41.2,有人可以在版本0.41.2上解决此问题吗?谢谢。
— joemalski

2
这对我也没有用。使用xcode 8.2.1并响应本机0.41.2
— Terry Ray

1
我试过了,它吹走了一些重要的项目设置。我正在构建一个动作扩展,运行完react-native upgrade所有构建设置后,这些设置都被删除了。
— Shane O Sullivan

1
我会添加“删除yarn.lock”文件,以便可以使用“ npm install”
— user1709076

247

xcode Product-> Scheme-> Manage Schemes在目标上单击“ +”以选择“ React”并设置React已共享。


10
我点击“ +”,没有“反应”可供选择。一个对话框出现有“目标:MyApp的”和名称:MyApp的“没有说反应或共享。
— 皮特阿尔文

在安装创建了xcworkspace文件的cocopods之后,这发生在我身上。我现有的xcodeproj没有“反应”选项,但xcworkspace有。
— AdamG '17

@PeteAlvin我运行了“ npm install -g react-native-git-upgrade”,然后运行“ react-native-git-upgrade”,然后它对我显示了react选项
— Paul Fitzgerald

1
在我完成构建之后,但此后在Xcode中未激活运行
— Lucky_girl

万分感谢。我不知道为什么这不是公认的解决方案。
— Gaurav Grover

19

对于所有使用React Native 0.40.0或更高版本的用户,Header Imports与RN 0.40.0相比都有重大变化,并导致许多.h文件未找到错误。react-native-git-upgrade在调试时为我解决了该问题,但在发布/归档中构建失败。

我正在将RN 0.42.3与cocoapods和Xcode 8.2.1一起使用

要完全解决此问题,请转到Xcode>产品>方案>编辑方案>

  1. 取消勾选并行构建 在此处输入图片说明
  2. 在Tar​​gets中单击+按钮并添加React 在此处输入图片说明
  3. 将添加的React拖到 Targets列表的顶部。 在此处输入图片说明

现在清理项目并构建


4
这并不能解决我的问题,请回应v.0.44.0
— Justus Eapen

17

其他建议都没有解决我的错误,但是这个建议做到了。

1-创建Podfile

ios/Podfile在您的react-native应用程序内部创建一个文件,其内容如下:

# You Podfile should look similar to this file. React Native currently does not support use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target '<YOUR_APP_NAME>' do
  # Fixes required for pod specs to work with rn 0.42
  react_native_path = "../node_modules/react-native"
  pod "Yoga", :path => "#{react_native_path}/ReactCommon/yoga"
  pod "React", :path => react_native_path, :subspecs => [
    'Core',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket'
  ]

  pod 'GoogleMaps'  # <~~ remove this line if you do not want to support GoogleMaps on iOS

# when not using frameworks  we can do this instead of including the source files in our project (1/4):
#  pod 'react-native-maps', path: '../../'
#  pod 'react-native-google-maps', path: '../../'  # <~~ if you need GoogleMaps support on iOS
end

2-安装Podfile

pod install从ios文件夹中运行命令。

3-重置XCode

重新启动XCode,错误应该消失了。


这在某种程度上解决了这个问题。但是我发现,新配置似乎不遵守构建顺序,因此它们没有采用自定义脚本。从根本上讲,这是react-native或react-native + xcode的问题
— prog_24,2018年

9

在我第一次尝试在XCode中运行React构建之后,我遇到了这个问题,而我要做的实际上是构建并运行以使错误消失(在选择团队和适当的调配之后)。有时,XCode会在第一次编译和链接事物之前显示并非真正的错误。


我也是。很奇怪,只需构建和调试,错误就消失了。我不知道为什么
— 张巴兹

@PaulFitzgerald-许可证是什么?我不认为我需要许可任何东西……
— Dave Cole

8

对我有效的解决方案是共享React方案。

如果您没有React方案,请通过创建一个新方案Selecting scheme menu -> Manage Scheme -> + -> choose React,然后将React方案标记为Shared

在此处输入图片说明

在此处输入图片说明 在此处输入图片说明

另外,如果您使用Xcode 10,请转到File -> Project Settings并选择“旧版”构建系统

在此处输入图片说明


1
谢谢!有时,如果不具备我认为的iOS和Android本机开发以及所使用的工具的知识,有时很难解决这类问题。
— qasimalbaqali

1
@ onmyway133我希望我能进一步投票赞成你的答案!谢谢
— 穆罕默德·阿巴斯

7

我通过以下步骤解决了这个问题:

  1. 在xcode中,选择项目根目录。
  2. 拖动React.xcodeproj从Libraries该项目的根目录。
  3. 单击项目名称(在我的情况下为SaleKit)TARGETS
  4. 选择 Build Phases
  5. 在Target Dependencies添加下拉菜单中React
  6. 重建或重新运行

在此处输入图片说明


1
这对我有用!我使用react-native-schemes-manager,所以直到我添加了它,我的暂存方案才得以构建。它在以前工作了几个月,然后在重新克隆后突然不工作了。怀疑我在package.json中的NPM范围太大。

为我工作,无需将React.xcodeproj拖出Libraries文件夹。
— ErmannoS

6

对于我在ReactNative“ 0.54.2”中的情况,我使用以下解决方案解决了它

在Xcode select中Product->Scheme->Manage Schemes,取消选中“ YourProject” -tvOS,将其设置为“不共享”


1
它对我有用,反应本地版本:0.55.4。谢谢
— Adarsh

1
为我工作!我之前已经删除了tvOS目标,却忘了将其作为方案删除!=> RN 0.56
— BigPun86 '18年

4

最佳解决方案:

在Xcode中为您的项目打开“构建设置”,然后搜索“标题搜索路径”。

双击“标题搜索路径”旁边的其他属性为“是”或“否”的标题

现在,将以下内容添加到“标题搜索路径”(在“构建设置”下):

$(SRCROOT)/../node_modules/react-native/React
$(SRCROOT)/../node_modules/react-native/React/Base

不要忘记使它们都递归。



3

.xcodeproj安装pod后,您可能正在运行文件。

关闭它并打开.xcworkspace文件。它为我工作。


2

在项目的基本目录中,我运行:

node_modules/react-native/packager/packager.sh --reset-cache

结果是:

Scanning 554 folders for symlinks in /Users/..../work/..../react_tutorial/AwesomeProject/node_modules (15ms)
 ┌────────────────────────────────────────────────────────────────────────────┐
 │  Running packager on port 8081.                                            │
 │                                                                            │
 │  Keep this packager running while developing on any JS projects. Feel      │
 │  free to close this tab and run your own packager instance if you          │
 │  prefer.                                                                   │
 │                                                                            │
 │  https://github.com/facebook/react-native                                  │
 │                                                                            │
 └────────────────────────────────────────────────────────────────────────────┘
Looking for JS files in
   /Users/..../work/...../react_tutorial/AwesomeProject

Loading dependency graph... ERROR  Packager can't listen on port 8081
Most likely another process is already using this port
Run the following command to find out which process:

lsof -i :8081

我发现当另一个打包程序进程正在运行时,程序包管理器无法运行。

我发现该进程运行:

lsof -i :8081

比我kill 9 ...的过程。

然后,我关闭Xcode,然后运行:

npm install

并再次启动Xcode,从这一刻开始,一切都会按预期进行!!


2

我遇到了同样的问题,并通过在React / RCTBundleURLProvider.h上方放置RNFIRMessaging.h来解决它

所以看起来我会像:

#import "AppDelegate.h"
#import "RNFIRMessaging.h"

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

2

尝试以下方法:

  1. 清洁(cmd+ shift+ K)。
  2. 构建核心React-在Xcode中选择React作为方案并构建(cmd+ B)。
  3. 构建失败的库(例如RCTText)。
  4. 构建您的应用。

1
您如何准确地建立图书馆?
— AlxVallejo

2

单击产品->方案->管理方案-> +。然后添加react作为共享。还要确保您的项目名称也在那里。


1

我遇到了同样的问题。然后我删除了节点。尝试使用这些步骤

  1. 删除node_modules文件夹-rm -rf node_modules && npm install
  2. 重置打包程序缓存-rm -fr $ TMPDIR / react- *或node_modules / react-native / packager / packager.sh --reset-cache
  3. 清除Watchman手表-Watchman Watch-del-All

然后进行构建并查看


是的,我还在react-native版本0.41.2上尝试了此操作,但仍然无法正常工作...任何输入吗?谢谢。
— joemalski

1

我发现我升级React后解决此问题的方法是将的声明更改#import "RCTBundleURLProvider.h"为#import <React/RCTBundleURLProvider.h>


1

对我而言

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

通过

#import <RCTBundleURLProvider.h>
#import <RCTRootView.h>

在AppDelegate.m文件中工作。



0

我尝试了所有建议,但这些建议均无济于事,因此我删除了存储库并再次克隆它,这对我有用,所以我的建议是将您的更改提交回来,然后再次克隆对我有用的存储库。


0

我已经完成了上面提到的所有答案。

这是为我工作的解决方案:

第1步:

跑:

npm install react-native-fcm --save 

这导致在项目中的node_modules> react-native-fcm下创建目录

将react-native-fcm添加到您的项目

第2步:

您需要'$(SRCROOT)/../node_modules/react-native-fcm/ios'在构建设置中添加到标题搜索路径。

添加到标题搜索路径

这两个步骤可帮助我消除错误。

有关更多详细信息,您可以通过以下链接:

https://github.com/evollu/react-native-fcm/issues/63

https://github.com/evollu/react-native-fcm/issues/21


0

就我而言,我无法删除node_modules并重新安装,我也无法这样做,react-native-git-updgrade或者react-native upgrade因为我想继续使用RN-0.59,因为.60导致我的依赖关系出现问题。

无论如何,我的情况是我丢失了“ React / RCTBundleURLProvider.h”文件。我已经在模式中使用了React。它不在我的库目录中。我检查了目标的构建设置。

在目标依赖项内部,我在那里也有React。

我删除了“ React”目标依赖项,然后重新添加。清理构建文件夹,重新构建项目。有效。


不确定是否很重要,但是有一个错字:react-native-git-updgrade
— 约什

0

我正在使用React Native 0.61。我创建了一个共享扩展名,并收到此错误。我需要更换:

#import "RCTBundleURLProvider.h"

与

#import "React/RCTBundleURLProvider.h"


-2

确保项目路径没有空格。只是重命名文件夹并删除空格可以为我解决问题。

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.