React Native: RCT-Глупая фатальная ошибка — ‘fmt/компиляция.файл h’ не найден

#ios #xcode #react-native #cocoapods #react-native-hermes

Вопрос:

Я хочу включить Hermes для своего проекта iOS react native, но у меня следующая ошибка:

 In file included from ../ios/Pods/RCT-Folly/folly/Singleton.cpp:35: ../ios/Pods/RCT-Folly/folly/portability/FmtCompile.h:19:10: fatal error: 'fmt/compile.h' file not found #include lt;fmt/compile.hgt;  ^~~~~~~~~~~~~~~  

Моя конфигурация:

 System:  OS: macOS 11.6.1  Binaries:  Node: 12.22.7 - /usr/local/bin/node  npm: 6.14.15 - /usr/local/bin/npm  Watchman: 4.9.0 - /usr/local/bin/watchman  Managers:  CocoaPods: 1.10.1 - /usr/local/bin/pod  SDKs:  iOS SDK:  Platforms: iOS 14.5, DriverKit 20.4, macOS 11.3, tvOS 14.5, watchOS 7.4  npmPackages:  @react-native-community/cli: Not Found  react: 17.0.2 =gt; 17.0.2   react-native: ^0.66.3 =gt; 0.66.3   

Мой Подфайл:

 platform :ios, '12.0' require_relative '../node_modules/react-native/scripts/react_native_pods' require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules' use_frameworks!  workspace 'MyWorkspace'  # Default spec repo source 'https://github.com/CocoaPods/Specs.git'  ...  target 'MyTarget' do  project 'MyProject'   config = use_native_modules!   use_react_native!(  :path =gt; config[:reactNativePath],  # to enable hermes on iOS, change `false` to `true` and then install pods  :hermes_enabled =gt; true  )    ...  end  

После некоторого расследования я обнаружил, что динамическое связывание ( use_frameworks! ) вызывает эту проблему, и если я статически связываю модули, все работает нормально. Но я должен использовать фреймворки для своего проекта, так как же решить эту проблему?

Ответ №1:

Просто задайте пути поиска по заголовкам к fmt источникам непосредственно для RCT-Folly целевого post_install входа, чтобы решить эту проблему:

Подфайл:

 ...  post_install do |installer|  installer.pods_project.targets.each do |target|  if target.name == 'RCT-Folly'  target.build_configurations.each do |config|  config.build_settings['HEADER_SEARCH_PATHS'] = "$(inherited) ${PODS_ROOT}/fmt/include"  end  end  end end