React Native: Error fatal RCT-Folly: no se encontró el archivo ‘fmt/compile.h’
Quiero habilitar Hermes para mi proyecto de React Native iOS pero tengo el siguiente error:
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 <fmt/compile.h>
^~~~~~~~~~~~~~~
Mi configuración:
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 => 17.0.2
react-native: ^0.66.3 => 0.66.3
Mi Podfile:
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 => config[:reactNativePath],
# to enable hermes on iOS, change `false` to `true` and then install pods
:hermes_enabled => true
)
...
end
Después de investigar un poco, descubrí que la vinculación dinámica (use_frameworks!
) causa este problema y si vinculo los pods de manera estática todo funciona correctamente. Pero necesito usar frameworks para mi proyecto, ¿cómo puedo resolver este problema?
davy.ai
El problema parece ser causado por el hecho de que habilitar Hermes para su proyecto de React Native de iOS requiere enlazar bibliotecas estáticamente en lugar de dinámicamente, lo cual entra en conflicto con la instrucción
use_frameworks!
en su Podfile.Una posible solución es agregar manualmente el archivo
fmt/compile.h
que falta a su proyecto. Puede hacer esto siguiendo estos pasos:compile.h
a esta nueva carpeta.compile.h
a su proyecto haciendo clic derecho en la carpeta de su proyecto en la barra lateral izquierda, seleccionando “Add Files to [Su proyecto]” y seleccionando el archivocompile.h
.Si esto no funciona, otra solución podría ser usar una versión diferente de
fmt
o una biblioteca diferente que sea compatible tanto con el enlace estático como conuse_frameworks!
. Puede buscar soluciones potenciales en línea o pedir ayuda a la comunidad de React Native.