React Native ImagePicker iOS编译报错:yoga.YGNode非模块化头文件引入问题
解决方案:解决React Native iOS中
Include of non-modular header inside framework module 'yoga.YGNode'错误 针对你的场景(必须保留use_frameworks!,RN 0.68.5版本),可以尝试以下几个针对性修复步骤:
1. 修改Podfile,添加Yoga适配配置
在Podfile的target 'YourAppName' do代码块内,补充以下post_install配置:
post_install do |installer| installer.pods_project.targets.each do |target| # 修复Yoga的模块化头文件问题 if target.name == 'Yoga' || target.name == 'YogaKit' target.build_configurations.each do |config| config.build_settings['DEFINES_MODULE'] = 'YES' config.build_settings['HEADER_SEARCH_PATHS'] = '"$(PODS_TARGET_SRCROOT)" "$(PODS_ROOT)/Yoga"' end end # 适配react-native-image-picker的framework依赖 if target.name == 'RNImagePicker' target.build_configurations.each do |config| config.build_settings['FRAMEWORK_SEARCH_PATHS'] = '"$(inherited)" "$(PODS_ROOT)/Firebase"' end end installer.pods_project.save end end
添加完成后,执行npx pod-install ios,再用Cmd+Shift+K清理Xcode缓存后重新编译。
2. 调整Xcode中Yoga的头文件公开设置
- 打开Xcode项目,左侧导航栏找到
Pods->Yoga->Headers文件夹 - 将
YGNode.h等红色标记的非公开头文件拖到Public分组下 - 选中Yoga目标,进入
Build Phases->Headers,确认YGNode.h在Public列表中 - 重新编译项目
3. 改用静态Framework链接(推荐)
RN 0.68+支持静态framework链接,既能满足Firebase依赖要求,又能避免模块化冲突。修改Podfile中的配置:
# 替换原有的use_frameworks! use_frameworks! :linkage => :static
执行npx pod-install ios,清理缓存后重新构建项目。
4. 锁定Yoga兼容版本
在package.json中添加版本锁定:
"resolutions": { "yoga": "1.14.0" }
删除node_modules和Podfile.lock,重新执行yarn install(或npm install)和npx pod-install ios后编译。
内容的提问来源于stack exchange,提问作者gabogabans
相关产品推荐
相关产品推荐

