React/RCTBridgeModule.h文件未找到。

149

在使用Xcode构建React Native iOS应用程序时,出现了以下错误。

enter image description here

在安装并链接react-native-fs库后,开始出现此错误。但是在网上寻找解决方案后,我发现许多人在安装其他React Native库时也遇到了同样的问题。

许多人提出了一个可能的解决方法,即在“Build Settings” -> “Header Search Paths”下添加以下内容:

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

但是尝试了这个解决方案后,仍然无法解决此错误。


我在v0.41.2版本中遇到了同样的错误,它应该可以使用<React/RCT...>,但是它并没有:/ - pgarciacamou
@camou 请看下面的回答;它可能会有所帮助。 - lawrence
@CecilRodriguez 你使用的react-native-fs版本是多少?如果你是手动在XCode中添加,请查看https://github.com/itinance/react-native-fs#adding-manually-in-xcode。 - Shubham Khatri
如果您使用的是M1芯片,则应该可以解决此问题。https://dev59.com/slEG5IYBdhLWcg3wgv82#68275769 - Smart Coder
一个 pod 更新解决了我的问题。 - Ahmadreza
显示剩余2条评论
25个回答

169

在我的情况下,当我尝试为 iOS 存档一个 0.40+ react-native 应用程序时出现了这个特定的问题(解决方案在此找到:Reliable build on ^0.39.2 fails when upgrading to ^0.40.0)。

发生的问题是Xcode正在尝试并行构建 react-native 库,并在实际构建 react 库之前构建具有隐式 react 依赖项的库。

在我的情况下,解决方法是:

  1. 禁用并行构建:

    • Xcode 菜单 -> Product -> Scheme -> Manage Shemes...
    • 双击您的应用程序
    • 构建标签页 -> 取消选中 Parallelize Build
  2. 将 react 添加为项目依赖项

    • Xcode 项目导航器 -> 将 React.xcodeproj 从 Libraries 拖到根目录树中
    • 构建阶段选项卡 -> Target Dependencies -> + -> 添加 React

33
“drag to root tree”是什么意思?“Build Phases Tab”指什么?是指React.xcodeproj的“Build Phases”吗? - GreenAsJade
4
在创建新目标后出现此错误时,只需执行步骤1即可 :) - Kepedizer
11
自React Native 0.64版本起,不再存在React.xcodeproj文件。 - Lopakhin
4
那么如何解决React Native > 0.64的这个问题呢?我遇到了完全相同的问题,但找不到解决办法。 - Abram
19
现在没有“构建”选项卡 -> 不再取消勾选“并行构建”,但仍存在该错误! - Macilias
显示剩余10条评论

36

请确保禁用并行构建,并在您的目标之上添加React目标。

输入图像描述


在第一个答案之后我自己解决了问题,但将React向上移动解决了问题!不过我必须意识到这对构建过程实际上意味着什么。 - njoye
1
在添加了React目标后,我一直在想我做错了什么,抓狂了。但是将它上移解决了问题。@njoye,你能解释一下这在构建过程中意味着什么吗?谢谢! - Eugene Kim
@EugeneKim,列表中元素的顺序是苹果展示时间顺序的方式(这仍然经常让我困惑,在OSX和iOS上都是如此)。因此,在“应用程序”之前放置目标“React”将从“React”构建代码,然后再构建您自己的代码。由于您自己的代码使用了React目标,因此似乎会影响它是否能够被构建。可能正在构建文件,然后在您的目标中使用它们。 - njoye
我想使用并行构建功能来缩短构建时间。 - utkarsh-devops

32

快速修复(不是最佳方法)

更改导入react-native头文件的行:

 #import <React/RCTBridgeModule.h>
 #import <React/RCTLog.h>

至:
 #import "RCTBridgeModule.h"
 #import "RCTLog.h"

这是我为了使用库而不得不做的更改示例:关闭 #46 - 找不到 'RCTBridgeModule.h' 文件


18
如果您仔细阅读发行说明,我认为实际上是反过来的 - 新的/经批准的方法是#import <React/RCT...h>提交记录在这里 - user
2
我知道这似乎与文档推荐的相反,但今天指定的格式 #import "RCTBridgeModule.h" 真的对我更有效。 - paws
错误信息提示在文件“RCTFileReaderModule.h”中。 我按照建议更改了 #import 语句,但并没有起到帮助作用。 在关联的存储库拉取请求中,我看到更改是在“RNFSManager.h”和“RNFSManager.m”文件中完成的。我尝试在这两个文件中进行更改,但还是无济于事。 你有任何想法我做错了什么吗? - Yossi
1
但是我的代码在 #import "RCTBridgeModule.h" 处出现了错误... - velkoon
不要使用这种方法,因为在 React/*.h 中的所有后续导入都会失败并显示未找到。 - Vicary
谢谢,这是唯一适用于React Native版本大于0.64的解决方案。在我的0.66.5项目中有效。 - undefined

15

改变

  #import "RCTBridgeModule.h"

 #import "React/RCTBridgeModule.h"

4

我的解决方案是按照这里所述,删除所有位于Libraries中的内容。


这对我有用,非常感谢!顺便说一下,@redexp如果可能的话,你能否解释一下问题到底是什么?因为我对cocoapods和xcode一无所知。 - Shubham Bisht

4

如果在Xcode中,Libraries/React.xcodeproj 变成了红色,那么请重新安装 node_modules。

rm -rf node_modules && yarn

我从react-native 0.46.3新创建的项目变成了红色:S。当我执行react-native init时,我的npm版本为5.3.0,yarn版本为0.24.5。


谢谢,我正在将我的项目推送到Github。当我再次克隆它时,我发现缺少了显示为红色的React库。 你的命令有效。 - Rifinio

4

对我来说,在应用程序中添加了一个新的 scheme/target(app.staging),并使用 pod install 安装 pods 时出现了这个错误。

这个问题是由于 pods 没有为所有 targets 共享而导致的。所以我需要在 Podfile 中添加新添加的 target (app.staging)。

这是我的 Podfile。

platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

target 'app' do
  # Pods for app
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"

  target 'appTests' do
    inherit! :search_paths
    # Pods for testing
  end

  # Pods for staging app // important line below
  target 'app.staging'

  use_native_modules!
end

2
帮了我大忙!在 pod install 之后,我还需要清理项目。 - chenop

4

在手动进行react-native link一个不支持RN 0.59+自动链接的依赖项后,我遇到了这个问题。

解决方案是在Xcode中选择Libraries文件夹下的xcodeproj文件,然后在Build Settings中更改Header Search Paths,添加这两个路径(递归):

$(SRCROOT)/../../../ios/Pods/Headers/Public/React-Core
$(SRCROOT)/../../../ios/Pods/Headers/Public

1
这解决了我的问题,我认为旧的解决方案(如链接React.xcodeproj等)不再适用,这个是正确的解决方案。 - Tarun Gupta
1
这对我也起作用了,浪费了一些时间在这个问题上。当人类分为> 0.59和<0.59的项目时,应该选择这个答案。 - Blue Bot

3

如果您在将React Native升级到0.40+后遇到此错误,请在命令行上运行react-native upgrade


5
我现在正在尝试。那么使用react-native-git-upgrade怎么样? - pgarciacamou
好的,那是另一个选项。我认为它们两个都可以。 - lawrence

3
  • 删除pods文件夹和.xcworkspace文件
  • 在该目录下再次运行pod install
  • 尝试重新归档,完成

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接