@react-native-community/viewpager@2.0.2 Xcode报错 换版本安卓失效怎么解决
解决方案
该报错是@react-native-community/viewpager@2.0.2版本的iOS头文件缺少必要导入导致的,无需更换依赖版本(不会影响安卓端运行),按以下步骤操作即可修复:
- 打开路径为
node_modules/@react-native-community/viewpager/ios/ReactNativePageView.h的文件 - 替换文件头部的导入代码,修改后内容如下:
#import <UIKit/UIKit.h> #import <React/RCTView.h> // 新增缺失的RCTEventDispatcher导入 #import <React/RCTEventDispatcher.h> @interface ReactNativePageView : RCTView @property (nonatomic, assign) NSInteger initialPage; @property (nonatomic, assign) NSInteger pageMargin; @property (nonatomic, assign) BOOL scrollEnabled; @property (nonatomic, assign) BOOL showsHorizontalScrollIndicator; @property (nonatomic, assign) BOOL bounces; @property (nonatomic, assign) BOOL scrollsToTop; @property (nonatomic, assign) BOOL keyboardDismissMode; // 原来的RCTEventDispatcher类型声明即可正常识别 @property (nonatomic, weak) RCTEventDispatcher *eventDispatcher; @end
- 如果你的项目开启了
use_frameworks!配置,需要在Podfile中添加如下配置,指定该依赖编译为静态库:
pre_install do |installer| installer.pod_targets.each do |pod| if pod.name == 'react-native-viewpager' def pod.build_as_static? true end end end end
- 执行
cd ios && pod install --repo-update,清理Xcode缓存后重新运行项目即可。
要避免修改node_modules的内容下次安装依赖被覆盖,可以使用
patch-package工具生成永久补丁:
- 执行
npm install patch-package --save-dev安装依赖- 完成上述修改后执行
npx patch-package @react-native-community/viewpager生成补丁文件- 在package.json的scripts字段中添加
"postinstall": "patch-package",后续每次执行npm install都会自动应用补丁
内容的提问来源于stack exchange,提问作者Rover
相关产品推荐
相关产品推荐

