“ React/RCTBridgeModule.h”文件未找到

在 xcode 上构建反应本机 iOS 应用程序时出现此错误。

enter image description here

在 npm 安装和 rpm 链接 本地反应库之后开始出现这个错误。但是在网上搜索解决方案之后,我注意到许多人在安装其他反应本机库时都会得到相同的错误。

许多人建议的 可能的解决办法是, 在“构建设置”-> “标题搜索路径”下添加以下内容。

$(SRCROOT)/../node_modules/react-native/React-(递归)

但这个解决方案没有运气,仍然得到相同的错误

159693 次浏览

你能做的就是:

1) npm uninstall reat-native-fs卸载库

2) npm unlink react-native-fs解除库的链接

现在已经成功地删除了库,现在在项目中再次安装库,这次手动链接所有内容。有时自动链接会导致此错误。

权宜之计(不是最好的)

更改导入反应-本机标题行:

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

致:

 #import "RCTBridgeModule.h"
#import "RCTLog.h"

这里有一个我必须为我试图使用的库进行更改的例子: 关闭 # 46-找不到“ RCTBridgeModule.h”文件

正如前面的文章和 给你中所解释的那样,最新版本的反应本地库具有突破性的兼容性变化。如果您不打算升级到 response-national 0.40 + ,但是您可以强制安装该库的以前版本,例如使用 response-national-fs:

npm install --save -E react-native-fs@1.5.1

对于那些在将 React Natural 升级到0.40 + 之后出现此错误的查看器,您可能需要在命令行上运行 react-native upgrade

在我的例子中,这个特殊的问题发生在我试图为 iOS 存档一个0.40 + 的本机应用程序时(解决方案是在这里找到的: 升级到 ABC1时,在 ^0.39.2上的可靠构建失败)。

所发生的是,< em > Xcode试图以并行的 方式构建反应本机库,并且构建具有隐式反应依赖关系的库,之前实际上构建了反应库。

我的解决办法是:

  1. 禁用并行构建:

    • Xcode 菜单-> Product-> Scheme-> Manage Shemes..。
    • 双击您的应用程序
    • Build tab-> 取消选中 Parallelize Build
  2. 添加作为项目依赖项的 response

    • Xcode Project Navigator-> 将 React.xcodeproj 从 Library 拖动到根树
    • 构建阶段选项卡-> 目标依赖项-> +-> 添加 做出反应

我能够构建一个调试程序,但是我无法构建一个归档文件。

我解决这个问题的方法是,将/node _ module/response-national/React 中的 React.xcodeproj拖到我在 Xcode 的根目录中,然后在构建阶段 > 目标依赖项中添加 React 作为目标依赖项。

如果在 xcode 中 Libraries/React.xcodeproj是红色的,那么重新安装 node _ module

rm -rf node_modules && yarn

我新创建的项目从反应原生0.46.3是红色的: S 我有 npm 5.3.0和纱线0.24.5当我做反应原生 init

改变

  #import "RCTBridgeModule.h"

 #import "React/RCTBridgeModule.h"

确保禁用 Parallelise Build并在目标上方添加 React目标

enter image description here

如果你想让它从你的编辑器也打开 SMobile.xcscheme

改变 parallelizeBuildables = "NO"

对于我来说,没有工作任何从上述解决方案和以下是什么工作(我已经检查了 Parallelize Build,并添加了 React)

1. Open XCode --> To Libraries add `$LibraryWhichDoesNotWork.xcodeproj$`
2. Then for your app in the `Build Phases` add to the `Link Binary with Libraries` the file `lib$LibraryWhichDoesNotWork$.a`

在对新的依赖项运行 pod install命令之后,出现了这个错误。除此之外,还安装了 React。因此,Xcode 可能被混淆为 path。我从 PodFile 中删除了这些行,错误消失了。请注意,那些从这里删除的已经在 Xcode 链接。

target 'app' do


pod 'GoogleMaps'
pod 'Firebase/Auth', '~> 6.3.0'
pod 'Firebase/Database', '~> 6.3.0'


# Removed four pods below and it worked.


pod 'react-native-image-picker', :path => '../node_modules/react-native-image-picker'


pod 'ReactNativePermissions', :path => '../node_modules/react-native-permissions'


pod 'react-native-image-resizer', :path => '../node_modules/react-native-image-resizer'


pod 'RNFS', :path => '../node_modules/react-native-fs'


end

我在从0.58.4升级到新的反应本机版本0.60.4时遇到了这个问题。我在网上找到的东西对我没有任何帮助,但我设法让它工作起来:

进入构建设置,搜索“头搜索路径”,选择条目,按 DELETE 按钮。

我重写了这些值,看起来删除之后它们又回到了默认值。另外,Cocoapods 在 pod install之后用终端中的消息抱怨它:

[!] The `app [Release]` target overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Target Support Files/Pods-app/Pods-app.release.xcconfig'. This can lead to problems with the CocoaPods installation

转到项目中的 iOS 文件夹并安装 pod-

$ pod install

如果在安装 pod type 命令时出现任何错误-

$ xcode-select -p

结果应该是-/Applications/Xcode.app/content/Developer

如果路径不正确,那么打开 Xcode 的 iOS 项目,进入: Xcode-> 偏好-> 命令行工具-> select Xcode

再次安装吊舱,你的问题将得到解决。

对我来说,这个错误发生在我在应用程序中添加了一个新的 scheme/target (应用程序分段)并使用 pod install 安装 pods 时。

这个问题正在发生,因为吊舱并非为所有目标共享。因此我需要在 文件夹中添加新添加的目标(应用程序分段)。

这是我的播客文件。

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

在 React Native0.60之后,这个问题通常是由链接库和新的“自动链接”特性混合在一起造成的。这能帮我解决问题

使用

$ react-native unlink react-native-fs

完全使用刷新 Pods 集成

$ pod deintegrate && pod install

现在重新加载您的工作区并进行一次干净的构建。

我在使用 创建-反应-本机-模块创建的任何新模块中收到这个错误。没有一个发布的解决方案对我有效。

对我有效的方法是首先确保在新创建的模块文件夹中运行 yarn,以便创建 node_modules/(这一步可能是显而易见的)。然后,在 XCode 中选择 Product-> Scheme-> React,而不是默认选择 MyModuleName。

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

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

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

如果您希望保持启用 Parallelise Build 并避免丢失头文件的问题,那么在您的方案中提供一个预构建步骤,以将响应头文件放入派生数据区域。注意,在本例中,生成设置来自 React 项目。是的,这不是一个美丽的东西,但它可以完成工作,也削减了很多时间的建设。预构建步骤的输出结束于 prebuild.log 中。您需要复制的确切标题将取决于您的项目的本机反应依赖关系,但是您将从中获得 jist。

Edit Scheme => Build

从环境变量中获取派生的数据目录,并将所需的反应头复制过来。

#build_prestep.sh (chmod a+x)
derived_root=$(echo $SHARED_DERIVED_FILE_DIR|sed 's/DerivedSources//1')
react_base_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Base/#1')
react_view_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Views/#1')
react_modules_head=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Modules/#1')
react_netw_headers=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Network/#1')
react_image_header=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Image/#1')


echo derived root = ${derived_root}
echo react headers = ${react_base_headers}


mkdir -p ${derived_root}include/React/


find  "${react_base_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_view_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_modules_head}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_netw_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_image_header}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;

在构建过程中确实调用了该脚本-clean-这并不理想。在我的例子中,有一个 env 变量可以让我在清理过程中提前退出脚本。

if [ "$RUN_CLANG_STATIC_ANALYZER" != "NO" ] ; then
exit 0
fi

Anhdevit 在 https://github.com/facebook/react-native/issues/24363#issuecomment-488547280中的建议对我很有用:

在您的终端中,运行: 默认删除 com.apple.dt. Xcode

我的解决方案是像 给你描述的那样删除 Libraries中的所有内容

本地版本0.67.4(最近更新)这个构建错误开始出现在 IOS 中。

我在我的项目 > 编辑计划 > 建造

上面提到了“反应”但指的是“失踪”

所以我删除了它(小按钮) ,并通过弹出窗口添加了“ React back”(小 + 按钮) ,弹出窗口中有一个 Pods 文件夹和一个“ React”pod 项目。

因此,它看起来像是用于提供一个项目文件,您可以将该文件设置为方案中的构建目标:/node _ module/response-national/ReactReact.xcodeproj

但是,在这个新版本的反应项目不存在,这将解释为什么构建将失败,如果您有一个本机模块桥接(其搜索头文件不存在)

我不再得到构建错误,但我还没有验证它的工作。将更新一次,我得到一个积极的结果(或一个负面的事情)。即使这确实能够解决问题,我也不确定这是否是“正确”的方法,但我当然愿意接受建议。

在我的例子中,podfile 中选择了错误的目标,纠正之后,我就可以开始了。

在我的例子中,我从目标项目中的“排除体系结构”下的发布部分中删除了“ arm64”

  • 删除 pods 文件夹和. xcworkspace 文件
  • 运行 pod 在该目录中再次安装
  • 尝试再次存档并完成