es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

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?

Tags:  , , , ,

Answer

  1. Avatar for 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:

    1. Localice el archivo que falta buscando en su computadora o en línea su código fuente.
    2. Una vez que haya encontrado el archivo, cree un nuevo folder en el directorio de su proyecto llamado “fmt” (si aún no existe).
    3. Mueva el archivo compile.h a esta nueva carpeta.
    4. En Xcode, agregue el archivo 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 archivo compile.h.
    5. Limpie su proyecto yendo a Product > Clean Build Folder en Xcode.
    6. Reinicie su proyecto e intente habilitar Hermes de nuevo.

    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 con use_frameworks!. Puede buscar soluciones potenciales en línea o pedir ayuda a la comunidad de React Native.

Comments are closed.