No se encontró el archivo "RCTBundleURLProvider.h" - AppDelegate.m

124

Estoy tratando de ejecutar mi aplicación React Native en XCode y sigo recibiendo este error. No puedo entender cómo resolver el problema. ¿Alguna sugerencia?

Captura de pantalla de error en XCode:

captura de pantalla

FilosoferKing
fuente
Sugeriría antes de aplicar cualquier cambio, simplemente limpie su proyecto e intente ejecutarlo porque lo mismo sucede en mi caso. Simplemente limpio mi proyecto y lo ejecuto y funciona.
bittu
¡Definitivamente deberías cambiar la respuesta correcta! La respuesta de @mark es la correcta y todos vienen por ella.
Serdar Değirmenci

Respuestas:

64

Elimine los módulos de nodo, luego ejecute npm install(o mejor aún, hilado) y una vez que todo haya terminado de descargar, ejecute lo react-native upgradeque debería darle la opción de reemplazar los archivos antiguos con los de la plantilla, al hacerlo, vuelva a vincular sus dependencias nativas en react-native que Debería solucionar su problema. Por supuesto, no olvides limpiar tu proyecto en Xcode.

Armands Malejevs
fuente
55
Puede usar la nueva herramienta de actualización basada en Git ya que resolvió conflictos automáticamente. Ejecute "npm install -g react-native-git-upgrade" seguido de "react-native-git-upgrade".
bitsand
2
Seguí las sugerencias, pero no ... tengo la versión nativa de reacción 0.41.2 ¿hay alguien que pueda arreglar esto en la versión 0.41.2? Gracias.
joemalski
2
Esto tampoco funcionó para mí. usando xcode 8.2.1 y reaccionar nativo 0.41.2
Terry Ray
1
Intenté esto, y eliminó algunas configuraciones importantes del proyecto. Estoy creando una extensión de acción y, después de ejecutar, react-native upgradese eliminaron todas las configuraciones de compilación.
Shane O Sullivan
1
agregaría 'eliminar el archivo yarn.lock' para que pueda usar 'npm install'
user1709076
247

xcode Product-> Scheme-> Manage Schemes, haga clic en '+' en el Destino para seleccionar "Reaccionar" y configurar la Reacción compartida.

marca
fuente
10
Toco '+' y no hay "Reaccionar" para seleccionar. Aparece un cuadro de diálogo con "Target: MyApp" y Name: MyApp. "Nada dice Reaccionar o compartir.
Pete Alvin
Esto me sucedió después de instalar cocopods que crearon un archivo xcworkspace. Mi xcodeproj existente no tenía "React" como opción, pero el xcworkspace sí.
AdamG
@PeteAlvin ejecuté Ejecutar "npm install -g react-native-git-upgrade seguido de" react-native-git-upgrade "y luego mostró la opción de reacción para mí
Paul Fitzgerald
1
Después de que hice esa compilación exitosa, pero Run no está activo en Xcode después de eso
Lucky_girl
Gracias una tonelada. Me pregunto por qué esta no es la solución aceptada.
Gaurav Grover
19

Para todos aquellos que usan React Native 0.40.0 o superior, las Importaciones de encabezado tienen un cambio importante desde RN 0.40.0 y dan como resultado muchos errores de archivo .h no encontrados. react-native-git-upgradeSe solucionó el problema mientras estaba en depuración, pero la compilación falla en el lanzamiento / archivo.

Estoy usando RN 0.42.3 con cocoapods y Xcode 8.2.1

Para arreglar esto completamente, vaya a Xcode> Producto> Esquema> Editar esquema>

  1. Desmarcar Parallelize Build ingrese la descripción de la imagen aquí
  2. Haga clic en el botón + en Objetivos y agregue Reaccionar ingrese la descripción de la imagen aquí
  3. Arrastre el React agregado a la parte superior de la Lista en Objetivos. ingrese la descripción de la imagen aquí

Ahora limpia el proyecto y construye

Hariks
fuente
44
Esto no me solucionó, reacciona v.0.44.0
Justus Eapen
17

Ninguna de las otras sugerencias solucionó mi error, pero esta lo hizo.

1 - Crear Podfile

Cree un archivo llamado ios/Podfiledentro de su aplicación react-native con los siguientes contenidos:

# You Podfile should look similar to this file. React Native currently does not support use_frameworks!
source 'https://github.com/CocoaPods/Specs.git'

platform :ios, '8.0'

target '<YOUR_APP_NAME>' do
  # Fixes required for pod specs to work with rn 0.42
  react_native_path = "../node_modules/react-native"
  pod "Yoga", :path => "#{react_native_path}/ReactCommon/yoga"
  pod "React", :path => react_native_path, :subspecs => [
    'Core',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTGeolocation',
    'RCTImage',
    'RCTLinkingIOS',
    'RCTNetwork',
    'RCTSettings',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket'
  ]

  pod 'GoogleMaps'  # <~~ remove this line if you do not want to support GoogleMaps on iOS

# when not using frameworks  we can do this instead of including the source files in our project (1/4):
#  pod 'react-native-maps', path: '../../'
#  pod 'react-native-google-maps', path: '../../'  # <~~ if you need GoogleMaps support on iOS
end

2 - Instalar Podfile

Ejecute el comando pod installdesde el interior de la carpeta ios.

3 - Restablecer XCode

Reinicie XCode y el error debería desaparecer.

Erich
fuente
Esto resuelve el problema hasta cierto punto. Pero lo que descubrí fue que las nuevas configuraciones no parecen respetar el orden de compilación, por lo que no aceptan scripts personalizados. Fundamentalmente, este es un problema con react-native o react-native + xcode
prog_24
9

Me encontré con este problema después de mi primer intento de ejecutar una compilación React en XCode, y todo lo que tuve que hacer fue compilar y ejecutar para que el error desapareciera (después de elegir un equipo y un aprovisionamiento adecuado). A veces, XCode muestra errores que no son realmente errores hasta que compila y vincula las cosas la primera vez.

Dave Cole
fuente
Yo también. Es extraño, solo compilar y depurar, los errores desaparecieron. No se porque.
Zhang Buzz
@PaulFitzgerald - ¿Una licencia para qué? No creo que necesite licenciar nada ...
Dave Cole
8

La solución que funciona para mí es compartir el Reactesquema.

Si no tiene el esquema React, cree uno nuevo Selecting scheme menu -> Manage Scheme -> + -> choose React, luego marque el esquema React como Compartido

ingrese la descripción de la imagen aquí

ingrese la descripción de la imagen aquí ingrese la descripción de la imagen aquí

Además, si usa Xcode 10, vaya File -> Project Settingsy seleccione Sistema de compilación heredado

ingrese la descripción de la imagen aquí

onmyway133
fuente
1
¡gracias! A veces es difícil solucionar este tipo de problemas sin tener conocimiento del desarrollo nativo de iOS y Android, creo, y las herramientas con las que se utilizan.
qasimalbaqali
1
@ onmyway133 ¡Desearía poder votar tu respuesta más! Gracias
Mohammad Abbas
7

Resolví este problema siguiendo los pasos:

  1. En xcode, elija la raíz del proyecto.
  2. Arrastre React.xcodeprojdesde Librariesa la raíz del proyecto.
  3. Haga clic en el nombre del proyecto (en mi caso, nombre SaleKit) enTARGETS
  4. Escoger Build Phases
  5. En el menú desplegable de Target DependenciesagregarReact
  6. Reconstruir o volver a ejecutar

ingrese la descripción de la imagen aquí

Robusto
fuente
1
¡Esto funcionó para mí! Utilizo react-native-esquems-manager, por lo que fue mi esquema de etapas el que no se compiló hasta que agregué esto. Funcionó previamente durante meses, y de repente no funcionó después de un nuevo clon. Sospeche que mis rangos de NPM en package.json son demasiado generosos.
Funcionó para mí, sin la necesidad de arrastrar React.xcodeproj fuera de la carpeta Bibliotecas.
ErmannoS
6

Para mi caso en ReactNative "0.54.2", lo resolví con la siguiente solución

En Xcode select Product->Scheme->Manage Schemes, desmarque 'YourProject'-tvOS configúrelo como No compartido

JXLai
fuente
1
Me funciona, verison react-native: 0.55.4. Gracias
Adarsh
1
¡Trabajó para mi! ¡He eliminado el objetivo de tvOS antes y olvidé eliminarlo como esquema! => RN 0.56
BigPun86
4

Mejor solución :

Abra 'Configuración de compilación' para su proyecto en Xcode, busque 'Ruta de búsqueda de encabezado'.

Haga doble clic al lado de 'Ruta de búsqueda de encabezado', donde otras propiedades tienen un 'sí' o 'no'

Ahora agregue lo siguiente a la "Ruta de búsqueda de encabezado" (en Configuración de compilación):

$(SRCROOT)/../node_modules/react-native/React
$(SRCROOT)/../node_modules/react-native/React/Base

No te olvides Haz que ambos sean recursivos.

Mega Area
fuente
3

Ejecute npm installen el directorio de su proyecto para instalar react-nativeresolviendo este error.

Paul Brittain
fuente
3

Es posible que esté ejecutando el .xcodeprojarchivo después de instalar el pod.

Ciérrelo y abra el .xcworkspacearchivo. Funcionó para mi.

Saranjith
fuente
2

En el directorio base del proyecto que ejecuto:

node_modules/react-native/packager/packager.sh --reset-cache

Lo que resultó en:

Scanning 554 folders for symlinks in /Users/..../work/..../react_tutorial/AwesomeProject/node_modules (15ms)
 ┌────────────────────────────────────────────────────────────────────────────┐
   Running packager on port 8081.                                            
                                                                             
   Keep this packager running while developing on any JS projects. Feel      
   free to close this tab and run your own packager instance if you          
   prefer.                                                                   
                                                                             
   https://github.com/facebook/react-native                                  │
                                                                             
 └────────────────────────────────────────────────────────────────────────────┘
Looking for JS files in
   /Users/..../work/...../react_tutorial/AwesomeProject

Loading dependency graph... ERROR  Packager can't listen on port 8081
Most likely another process is already using this port
Run the following command to find out which process:

lsof -i :8081

Descubrí que el administrador de paquetes no puede ejecutarse cuando se está ejecutando otro proceso de empaquetador.

Encontré el proceso ejecutándose con:

lsof -i :8081

Que yo kill 9 ...el proceso.

Después de que cerré Xcode, ejecute:

npm install

¡Y comenzó Xcode nuevamente, desde este momento todo funciona como se esperaba!

Oded Regev
fuente
2

Tuve el mismo problema y lo solucioné colocando RNFIRMessaging.h sobre el React / RCTBundleURLProvider.h

Entonces parece que me veré así:

#import "AppDelegate.h"
#import "RNFIRMessaging.h"

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>
Jefferson Filho
fuente
2

Intenta lo siguiente:

  1. Limpio ( cmd+ shift+K ).
  2. Build core React: seleccione React como el esquema en Xcode y compílelo ( cmd+B ).
  3. Construya la biblioteca que falla (por ejemplo, RCTText).
  4. Crea tu aplicación.
jyson
fuente
1
¿Cómo se construye una biblioteca exactamente?
AlxVallejo
2

haga clic en Producto-> Esquema-> Administrar esquemas -> +. y luego agregue reaccionar como compartido. También asegúrese de que el nombre de su proyecto también esté allí.

Eran Or
fuente
1

Me enfrenté al mismo problema. Luego eliminé el nodo .try para usar estos pasos

  1. Eliminar la carpeta node_modules - rm -rf node_modules && npm install
  2. Restablecer caché del empaquetador - rm -fr $ TMPDIR / react- * o node_modules / react-native / packager / packager.sh --reset-cache
  3. Relojes clear watchman - watchman watch-del-all

luego crea y ve

Deporte
fuente
sí, también probé esto en la versión nativa de reacción 0.41.2 todavía no funciona tan bien ... ¿alguna entrada? Gracias.
joemalski
1

Descubrí que mi solución a este problema después de actualizar React era cambiar la declaración de #import "RCTBundleURLProvider.h"a#import <React/RCTBundleURLProvider.h>

ays0110
fuente
1

Para mí reemplazar

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

por

#import <RCTBundleURLProvider.h>
#import <RCTRootView.h>

en AppDelegate.m el archivo funcionó.

Pankti Shah
fuente
0

Si no has corrido npm install, es probable que encuentres este problema.

Harkirat Saluja
fuente
0

Intenté todas las sugerencias y ninguna de ellas funcionó, eliminé el repositorio y lo cloné nuevamente, y eso funcionó para mí, así que mi sugerencia es que confirme sus cambios y clone el repositorio nuevamente que funcionó para mí.

ragar90
fuente
0

He revisado todas las respuestas mencionadas anteriormente.

Aquí está la solución que funcionó para mí:

PASO 1:

Correr:

npm install react-native-fcm --save 

Esto da como resultado la creación del directorio en su proyecto en node_modules> react-native-fcm

Agregue react-native-fcm a su proyecto

PASO 2:

Debe agregar '$(SRCROOT)/../node_modules/react-native-fcm/ios'a las rutas de búsqueda de encabezado en la configuración de construcción.

Agregar a las rutas de búsqueda de encabezado

Estos 2 pasos me funcionaron para eliminar el error.

Para más detalles puede ir a través de estos enlaces:

https://github.com/evollu/react-native-fcm/issues/63

https://github.com/evollu/react-native-fcm/issues/21

Harjot Singh
fuente
0

Para mi caso, no pude eliminar node_modules y volver a instalar y tampoco pude hacerlo react-native-git-updgradeo react-native upgradeporque quería permanecer en RN-0.59 porque .60 causa problemas para mis dependencias.

De todos modos, mi situación era que me faltaba el archivo 'React / RCTBundleURLProvider.h'. Ya tenía React disponible en mis esquemas. No estaba en mi directorio de bibliotecas. Verifiqué la configuración de compilación de mi objetivo .

Dentro de las dependencias objetivo, también tenía React allí.

Eliminé la dependencia de destino 'Reaccionar', luego volví a agregar. Limpiar carpetas de compilación, proyecto reconstruido. funcionó.

Jim
fuente
No estoy seguro de que importe, pero hay un error tipográfico en: react-native-git-updgrade
Josh
0

Estoy usando React Native 0.61. Creé una extensión para compartir y recibí este error. Necesitaba reemplazar:

#import "RCTBundleURLProvider.h"

con

#import "React/RCTBundleURLProvider.h"
Eric Wiener
fuente
-1

necesitas instalar react native, en terminal run

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

luego

brew install node
brew install watchman
npm install -g react-native-cli

fuente:
https://facebook.github.io/react-native/docs/getting-started.html

Olzh
fuente
1
No es una respuesta para esta pregunta
S.Hossein Asadollahi
-2

Asegúrese de que la ruta a su proyecto no tenga espacios. Solo cambiar el nombre de las carpetas y eliminar espacios me resuelve el problema.

usuario5807443
fuente