React Native基础头文件在iOS上未找到。

16
在iOS链接阶段,我开始看到与我的React Native项目相关的错误。
React Native版本:0.41.20.400.39 一切都正常工作,我编辑了Android版本,React Native代码没有改变,但是当此类链接错误出现时,它们会显示头文件未找到,路径位于/node_modules/react-native/React/Base/{RCTHeaderName.h}

The error

In file included from /Users/user/ReactNativeProject/node_modules/react-native-vector-icons/RNVectorIconsManager/RNVectorIconsManager.h:9:
../react-native/React/Base/RCTBridgeModule.h:12:9: fatal error: 'React/RCTDefines.h' file not found
#import <React/RCTDefines.h>
        ^
  • 链接二进制文件库中,我包含了核心的React库(libReact.a)。

  • RCTLog.h的位置是PROJECTROOT/node_modules/react-native/React/Base/RCTLog.h,但导入语句为#import <React/RCTLog.h>

  • React.xcodeproj添加到库中并不起作用,Xcode的Product > Clean也无效,重新启动Xcode也无济于事

  • react-native run-android可以运行,但react-native run-ios会显示错误

  • 文件权限设置为执行react-native run-ios的用户

4个回答

30
您是否未选中“并行构建”选项,并将React列为构建目标中的第一个?

您可以在Xcode => 运行按钮旁边的您的项目图标 => 编辑方案 => 构建选项卡中找到此窗口。


看起来它找到了头文件,在重新安装react-native@0.41.2并删除过多的Header Search Paths之后。它开始显示重复的接口定义,这是一个好迹象。 - Peter G.
@PeterGerhat 删除派生数据目录有帮助吗?您可以在Xcode首选项=>位置选项卡中找到该文件夹。 - binchik
可能是Xcode已经解决了这个问题。重复的接口定义就是这个改变的结果 https://github.com/facebook/react-native/issues/11725 ,我只是按照那里的步骤来修复它。 - Peter G.
我在开发本地模块库时遇到了这个问题。除了禁用并行构建外,我还需要将React添加为目标依赖项(在“Build Phases”下),如此处所述:https://github.com/facebook/react-native/issues/11721#issuecomment-270672904 - fagerbua
要找到这个窗口,请单击下拉菜单->编辑方案并突出显示构建选项。然而,在我的情况下,我没有看到React输出,只有“luno”和“lunoTests”。 - Petrus Theron
显示剩余4条评论

5

更新: Facebook React-Native的解决方案 https://github.com/facebook/react-native/issues/11813

============

我也遇到了这个问题。 看起来React.xcodeproj只能识别DebugRelease配置。所有React.xcodeproj的输出都被写入Debug-iphonesimulatorRelease-iphonesimulator

这意味着如果你有一些除了“Debug / Release”之外的配置,输出仍将被写入Debug-iphonesimulatorRelease-iphonesimulator,这不是我们想要的。

因此,解决方案是在React.xcodeproj中添加与您自己项目相匹配的相同配置。

例如,如果您的项目中有“Debug / Release / Test / AppStore” 4种配置,则必须确保React.xcodeproj也有相同的4种配置。

请点击配置的“+”按钮,然后“复制发布配置”,并根据您的需要重命名它。

enter image description here


Debug/iphonesimulator 这个名称是从哪里来的?我如何知道这是我需要的配置名称? - Petrus Theron
@PetrusTheron,正确的解决方案在此:https://github.com/facebook/react-native/issues/11813,由philipshurpik于2月21日发表。 - DàChún
1
但是,一旦您清理了node_modules并重新安装它们,此解决方案将被覆盖。 - Martin Mlostek
不确定这个问题是否已经解决。但请使用此解决方案:https://github.com/facebook/react-native/issues/11813。它不会被覆盖。 - DàChún

4
似乎有很多原因导致出现“缺少头文件”错误,我尝试了Stack Overflow上发布的许多方法,但都没有用。最终,我偶然发现了下面的解决方案,这对我很有用。为了帮助其他人遇到同样的问题,我把它发出来……这有点难以理解。对于我而言,它是由Xcode中的构建位置设置引起的,该设置与原始的React Native不兼容。可以在此处查看解决此问题的构建位置设置:

在XCode->设置->位置->高级…确保您的构建位置没有设置为Legacy,而应将其设置为Unique

注意:在更改此设置后,可能需要使用react-native init从头开始重新初始化原始的React Native应用程序。


0
在您的库的构建设置中添加path/project folder/ios/Pods/Headers/PublicHeader Search Path。问题将得到解决。

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