找不到“ 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.xcodeprojLibraries该项目的根目录。
  3. 单击项目名称(在我的情况下为SaleKitTARGETS
  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.