" RCTBundleURLProvider.h"找不到文件 - AppDelegate.m

时间:2016-11-01 20:35:24

标签: ios xcode react-native

我正在尝试在XCode中运行我的React Native应用程序并且我一直收到此错误。我无法弄清楚如何解决这个问题。有什么建议吗?

XCode中的错误屏幕截图:

screenshot

26 个答案:

答案 0 :(得分:237)

xcode Product-> Scheme-> Manage Schemes点击Target上的'+'选择“React”并设置React是共享的。

答案 1 :(得分:59)

删除节点模块,然后运行npm install(或更好的纱线),在完成所有内容下载后,运行react-native upgrade,这样就可以选择用模板替换旧文件了所以你在react-native中重新链接你的本机依赖项,​​这应该可以解决你的问题。当然不要忘记在Xcode中清理你的项目。

答案 2 :(得分:19)

对于所有使用 React Native 0.40.0 或更高版本的人,标头导入与 RN 0.40.0 有重大变化,导致许多.h文件没有发现错误。 react-native-git-upgrade在调试时为我解决了问题,但在发布/存档中构建失败。

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

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

  1. 解开并行构建 enter image description here
  2. 点击目标中的+按钮,然后添加反应 enter image description here
  3. 将添加的 React 拖到目标列表的顶部。 enter image description here
  4. 现在清理项目并构建

答案 3 :(得分:16)

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

1 - 创建Podfile

在您的react-native应用程序中创建一个名为ios/Podfile的文件,其中包含以下内容:

# 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

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

3 - 重置XCode

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

答案 4 :(得分:9)

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

答案 5 :(得分:7)

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

  1. 在xcode中选择项目根目录。
  2. React.xcodeprojLibraries拖到项目的根目录。
  3. 点击SaleKit
  4. 中的项目名称(在我的情况下,名称为TARGETS
  5. 选择Build Phases
  6. 下拉Target Dependencies添加React
  7. 重建或重新运行
  8. enter image description here

答案 6 :(得分:6)

最适合我的解决方案是共享React方案。

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

enter image description here

enter image description here enter image description here

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

enter image description here

答案 7 :(得分:5)

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

在Xcode中选择Product->Scheme->Manage Schemes,取消勾选'YourProject'-tvOS将其设置为不共享

答案 8 :(得分:3)

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

将其关闭并打开.xcworkspace文件。它对我有用。

答案 9 :(得分:3)

在项目目录中运行npm install以安装react-native来解决此错误。

答案 10 :(得分:2)

最佳解决方案:

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

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

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

$(SRCROOT)/../ node_modules / react-native / React $(SRCROOT)/../ node_modules / react-native / React / Base 不要忘记让它们都递归。

答案 11 :(得分:2)

尝试以下方法:

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

答案 12 :(得分:2)

我遇到了同样的问题,我通过将 RNFIRMessaging.h 置于 React / RCTBundleURLProvider.h

之上来解决此问题。

所以我看起来会像:

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

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

答案 13 :(得分:1)

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

答案 14 :(得分:1)

我要替换

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

作者

#import <RCTBundleURLProvider.h>
#import <RCTRootView.h>
AppDelegate.m文件中的

工作正常。

答案 15 :(得分:1)

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

答案 16 :(得分:1)

在我运行的项目的基础目录中:

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,从这一刻开始,一切都按预期工作!!

答案 17 :(得分:1)

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

  1. 删除node_modules文件夹 - rm -rf node_modules&amp;&amp; npm install
  2. 重置包装器缓存 - rm -fr $ TMPDIR / react- *或 node_modules / react-native / packager / packager.sh --reset-cache
  3. 清除守望者手表 - 守望者手表 - 所有
  4. 然后进行构建并查看

答案 18 :(得分:0)

就我而言,我无法删除node_modules并重新安装,我也无法执行react-native-git-updgradereact-native upgrade,因为我想继续使用RN-0.59,因为.60会导致我的依赖性。

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

在目标依赖关系中,我也有React。

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

答案 19 :(得分:0)

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

#import "RCTBundleURLProvider.h"

使用

#import "React/RCTBundleURLProvider.h"

答案 20 :(得分:0)

https://github.com/facebook/react-native/blob/v0.63.3/template/ios/Podfile

用您的项目名称查找/替换HelloWorld

将此文件放入项目中的./ios文件夹中

gem install cocoapods
cd ios
pod install

然后在XCode中打开YourProject.xcworkspace文件

在XCode中,转到Product -> Scheme -> Manage Schemes并检查React

然后尝试再次构建项目。

答案 21 :(得分:0)

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

以下是适合我的解决方案:

第1步:

运行:

npm install react-native-fcm --save 

这导致项目中的目录在 node_modules&gt;下;反应天然-FCM

Add react-native-fcm to your project

第2步:

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

Add to header search paths

这两个步骤对我有用,可以删除错误。

有关详细信息,您可以浏览以下链接:

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

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

答案 22 :(得分:0)

我尝试了所有的建议,并且他们都没有工作,我删除了repo并再次克隆它,这对我有用,所以我的建议是将你的更改提交回来并再次克隆对我有效的repo。 / p>

答案 23 :(得分:0)

如果您没有运行npm install,则可能会遇到此问题。

答案 24 :(得分:-1)

你需要安装反应原生, 在终端运行中

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

然后

brew install node
brew install watchman
npm install -g react-native-cli

源:
https://facebook.github.io/react-native/docs/getting-started.html

答案 25 :(得分:-2)

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