You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

集成react-native-pdf时iOS端出现多类错误,是否遗漏配置?

问题分析与解决步骤

核心问题:Blob库冲突与版本不兼容

你同时安装了已废弃的react-native-fetch-blob和它的继任者react-native-blob-util,二者存在API冲突;且react-native-fetch-blob@0.10.8与React Native 0.68.0的iOS初始化逻辑不兼容,直接引发后续AppRegistry初始化失败。

具体解决步骤

  • 移除冲突的废弃库
    执行命令卸载react-native-fetch-blob:

    npm uninstall react-native-fetch-blob
    # 或用yarn
    yarn remove react-native-fetch-blob
    

    清理iOS端残留配置:

    1. 打开Xcode项目,进入Pods目录删除RNFetchBlob相关文件
    2. 执行pod install更新依赖
    3. 按Command + Shift + K清理Xcode缓存,重启Xcode
  • 配置Blob工具库适配react-native-pdf
    react-native-pdf默认依赖旧Blob库API,需手动映射到react-native-blob-util:
    在项目根目录的metro.config.js中添加别名配置:

    const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config');
    
    const config = {};
    
    module.exports = mergeConfig(getDefaultConfig(__dirname), {
      resolver: {
        alias: {
          'react-native-fetch-blob': 'react-native-blob-util',
        },
      },
    });
    
  • 验证依赖并重建项目

    1. 执行npm install或yarn install确保依赖完整
    2. 重新生成JS bundle:
      npx react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/main.jsbundle --assets-dest ios
      
    3. 在Xcode中重新运行项目
  • 消除main queue警告(可选)
    若仍有requiresMainQueueSetup警告,可修改react-native-blob-util的iOS原生代码:
    找到ios/RNBlobUtil/RNBlobUtil.m文件,添加以下方法:

    + (BOOL)requiresMainQueueSetup {
      return YES;
    }
    

    之后重新执行pod install并重启项目

额外检查项

  • 确认react-native-pdf的iOS配置完整:
    1. Podfile中已添加pod 'react-native-pdf', :path => '../node_modules/react-native-pdf'
    2. Xcode项目的Build Phases -> Link Binary With Libraries已添加libRCTPdf.a
    3. 若需访问本地文件,已在Info.plist中添加对应权限描述(如NSFileProviderDomainUsageDescription)

内容的提问来源于stack exchange,提问作者Surezz

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.23 12:57:35