Fichier «RCTBundleURLProvider.h» introuvable - AppDelegate.m


124

J'essaie d'exécuter mon application React Native dans XCode et j'obtiens toujours cette erreur. Je n'arrive pas à comprendre comment résoudre le problème. Aucune suggestion?

Capture d'écran de l'erreur dans XCode:

capture d'écran


Je suggérerais avant d'appliquer des modifications, nettoyez simplement votre projet et essayez de l'exécuter car la même chose se produit dans mon cas. Je viens de nettoyer mon projet et de l'exécuter et cela fonctionne.
bittu

Vous devez absolument changer la bonne réponse! La réponse de @mark est la bonne et tout le monde y vient.
Serdar Değirmenci

Réponses:


64

Supprimez les modules de nœuds, puis exécutez npm install(ou mieux encore yarn) et une fois que tout est téléchargé, exécutez react-native upgradece qui devrait vous donner la possibilité de remplacer les anciens fichiers par ceux du modèle, ce faisant, vous reliez vos dépendances natives dans react-native qui devrait résoudre votre problème. N'oubliez bien sûr pas de nettoyer votre projet dans Xcode.


5
Vous pouvez utiliser le nouvel outil de mise à niveau basé sur Git car il a résolu automatiquement les conflits. Exécutez "npm install -g react-native-git-upgrade" suivi de "react-native-git-upgrade".
bitsand

2
J'ai suivi les suggestions mais non .. J'ai la version 0.41.2 native de réaction. Y a-t-il quelqu'un qui est capable de résoudre ce problème sur la version 0.41.2? Merci.
joemalski

2
cela n'a pas non plus fonctionné pour moi. en utilisant xcode 8.2.1 et réagir natif 0.41.2
Terry Ray

1
J'ai essayé cela et cela a époustouflé certains paramètres de projet importants. Je construis une extension d'action et après avoir exécuté react-native upgradetous mes paramètres de construction ont été supprimés.
Shane O Sullivan

1
j'ajouterais le fichier `` supprimer le yarn.lock '' afin que vous puissiez utiliser `` npm install ''
user1709076

247

xcode Product-> Scheme-> Manage Schemes cliquez sur '+' à la cible pour sélectionner "React" et définir le React est partagé.


10
J'ai frappé '+' et il n'y a pas de "Réagir" à sélectionner. Une boîte de dialogue apparaît avec "Cible: MyApp" et Nom: MyApp. "Rien ne dit Réagir ou partagé.
Pete Alvin

Cela m'est arrivé après l'installation de cocopods qui ont créé un fichier xcworkspace. Mon xcodeproj existant n'avait pas "React" comme option mais le xcworkspace en avait.
AdamG

@PeteAlvin j'ai lancé "npm install -g react-native-git-upgrade" suivi de "react-native-git-upgrade" et puis il a montré l'option react pour moi
Paul Fitzgerald

1
Après avoir fait cette construction a réussi, mais Run n'est plus actif dans Xcode après cela
Lucky_girl

Merci beaucoup. Je me demande pourquoi ce n'est pas la solution acceptée.
Gaurav Grover le

19

Pour tous ceux qui utilisent React Native 0.40.0 ou supérieur, les importations d'en-tête ont un changement majeur par rapport à RN 0.40.0 et entraînent de nombreuses erreurs de fichier .h non trouvées. react-native-git-upgradecorrigé le problème pour moi pendant le débogage mais la construction échoue dans la version / l'archive.

J'utilise RN 0.42.3 avec des cocoapodes et Xcode 8.2.1

Pour résoudre complètement ce problème, accédez à Xcode> Produit> Schéma> Modifier le schéma>

  1. Décochez Parallelize Build entrez la description de l'image ici
  2. Cliquez sur le bouton + dans les cibles et ajoutez React entrez la description de l'image ici
  3. Faites glisser le React ajouté en haut de la liste dans les cibles. entrez la description de l'image ici

Maintenant nettoyez le projet et construisez


4
Cela n'a pas résolu pour moi, réagissez v.0.44.0
Justus Eapen

17

Aucune des autres suggestions ne corrigeait mon erreur, mais celle-ci l'a fait.

1 - Créer un podfile

Créez un fichier nommé ios/Podfiledans votre application react-native avec le contenu suivant:

# 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 - Installez Podfile

Exécutez la commande à pod installpartir du dossier ios.

3 - Réinitialiser XCode

Redémarrez XCode et l'erreur devrait disparaître.


Cela résout le problème dans une certaine mesure. Mais ce que j'ai découvert, c'est que les nouvelles configurations ne semblent pas respecter l'ordre de construction et ne prennent donc pas de scripts personnalisés. Fondamentalement, il s'agit d'un problème avec react-native ou react-native + xcode
prog_24

9

J'ai rencontré ce problème après mon premier essai d'exécuter une version React dans XCode, et tout ce que j'avais à faire était de construire et d'exécuter pour faire disparaître l'erreur (après avoir choisi une équipe et un provisionnement approprié). Parfois, XCode montre des erreurs qui ne sont pas vraiment des erreurs jusqu'à ce qu'il compile et lie les choses la première fois.


Moi aussi. C'est étrange, il suffit de construire et de déboguer, les erreurs ont disparu. Je ne sais pas pourquoi.
Zhang Buzz

@PaulFitzgerald - Une licence pour quoi? Je ne pense pas que j'avais besoin de licence quoi que ce soit ...
Dave Cole

8

La solution qui fonctionne pour moi est de partager le Reactschéma.

Si vous n'avez pas de schéma React, créez-en un nouveau par Selecting scheme menu -> Manage Scheme -> + -> choose React, puis marquez le schéma React comme partagé

entrez la description de l'image ici

entrez la description de l'image ici entrez la description de l'image ici

De plus, si vous utilisez Xcode 10, accédez à File -> Project Settingset sélectionnez Système de construction hérité

entrez la description de l'image ici


1
Merci! Il est parfois difficile de résoudre ce genre de problèmes sans avoir une connaissance du développement natif iOS et Android, je pense, et des outils utilisés avec.
qasimalbaqali

1
@ onmyway133 J'aimerais pouvoir voter davantage pour votre réponse! Merci
Mohammad Abbas

7

J'ai résolu ce problème en suivant les étapes:

  1. Dans xcode, choisissez la racine du projet.
  2. Faites glisser React.xcodeprojde Librariesvers la racine du projet.
  3. Cliquez sur le nom du projet (dans mon cas, c'est le nom SaleKit) dansTARGETS
  4. Choisir Build Phases
  5. Dans la liste déroulante d' Target DependenciesajoutReact
  6. Reconstruire ou réexécuter

entrez la description de l'image ici


1
Cela a fonctionné pour moi! J'utilise React-Native-Schémas-Manager, et c'est donc mon schéma de Staging qui ne se construira pas tant que je n'aurai pas ajouté cela. Cela a fonctionné pendant des mois auparavant, puis n'a pas soudainement fonctionné après un nouveau clone. Je suppose que mes plages NPM dans package.json sont trop généreuses.

A travaillé pour moi, sans avoir besoin de faire glisser React.xcodeproj hors du dossier Bibliothèques.
ErmannoS

6

Pour mon cas dans ReactNative "0.54.2", je l'ai résolu avec la solution suivante

Dans Xcode sélectionnez Product->Scheme->Manage Schemes, décochez `` YourProject'-tvOS, définissez-le sur non partagé


1
Cela fonctionne pour moi, version native de réaction: 0.55.4. Merci
Adarsh

1
A travaillé pour moi! J'ai supprimé la cible tvOS avant et j'ai oublié de la supprimer comme schéma! => RN 0.56
BigPun86

4

Meilleure solution :

Ouvrez 'Build Settings' pour votre projet dans Xcode, recherchez 'Header Search Path'.

Double-cliquez à côté de "Chemin de recherche de l'en-tête", où les autres propriétés ont un "oui" ou un "non"

Maintenant, ajoutez ce qui suit au "Chemin de recherche d'en-tête" (sous Paramètres de construction):

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

N'oubliez pas Rendez les deux récursifs.


3

Exécutez npm installdans votre répertoire de projet pour installer la react-nativerésolution de cette erreur.


3

Vous exécutez peut-être le .xcodeprojfichier après l'installation du pod.

Fermez-le et ouvrez le .xcworkspacefichier. Cela a fonctionné pour moi.


2

Dans le répertoire de base du projet que je lance:

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

Ce qui a abouti à:

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

J'ai trouvé que le gestionnaire de packages ne peut pas s'exécuter lorsqu'un autre processus de conditionnement est en cours d'exécution.

J'ai trouvé le processus en cours d'exécution avec:

lsof -i :8081

Que moi kill 9 ...le processus.

Après avoir fermé Xcode, exécutez:

npm install

Et j'ai recommencé Xcode, à partir de ce moment, tout fonctionne comme prévu !!


2

J'ai eu le même problème et je l'ai résolu en plaçant RNFIRMessaging.h au-dessus de React / RCTBundleURLProvider.h

Donc, je vais ressembler à:

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

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

2

Essayez ce qui suit:

  1. Nettoyer ( cmd+ shift+ K).
  2. Build core React - sélectionnez React comme schéma dans Xcode et construisez-le ( cmd+ B).
  3. Construisez la bibliothèque qui échoue (par exemple RCTText).
  4. Créez votre application.

1
Comment construisez-vous une bibliothèque exactement?
AlxVallejo

2

cliquez sur Produit-> Schéma-> Gérer les schémas -> +. puis ajoutez réagir comme partagé. assurez-vous également que le nom de votre projet y figure également.


1

J'ai rencontré le même problème. Ensuite, j'ai supprimé le nœud .try pour utiliser ces étapes

  1. Supprimer le dossier node_modules - rm -rf node_modules && npm install
  2. Réinitialiser le cache du packager - rm -fr $ TMPDIR / react- * ou node_modules / react-native / packager / packager.sh --reset-cache
  3. Montres Clear Watchman - Watchman Watch-del-All

puis faites construire et voyez


yup j'ai aussi essayé ceci sur la version 0.41.2 de react-native qui ne fonctionne toujours pas aussi bien ... des entrées? Merci.
joemalski

1

Je trouve que mon correctif à ce problème après la mise à niveau a été de changer Réagir la déclaration #import "RCTBundleURLProvider.h"à#import <React/RCTBundleURLProvider.h>


1

Pour moi remplaçant

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

par

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

dans le fichier AppDelegate.m travaillé.


0

Si vous n'avez pas exécuté, npm installvous rencontrerez probablement ce problème.


0

J'ai essayé toutes les suggestions et aucune d'elles n'a fonctionné au moment où j'ai supprimé le dépôt et le cloner à nouveau et cela fonctionne pour moi, donc ma suggestion est de valider vos modifications et de cloner à nouveau le dépôt qui a fonctionné pour moi.


0

J'ai parcouru toutes les réponses mentionnées ci-dessus.

Voici la solution qui a fonctionné pour moi:

ÉTAPE 1:

Courir:

npm install react-native-fcm --save 

Cela entraîne la création du répertoire dans votre projet sous node_modules> react-native-fcm

Ajoutez react-native-fcm à votre projet

ÉTAPE 2:

Vous devez ajouter '$(SRCROOT)/../node_modules/react-native-fcm/ios'des chemins de recherche d'en-tête dans les paramètres de construction.

Ajouter aux chemins de recherche d'en-tête

Ces 2 étapes ont fonctionné pour moi pour supprimer l'erreur.

Pour plus de détails, vous pouvez passer par ces liens:

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

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


0

Pour mon cas, je ne pouvais pas supprimer node_modules et réinstaller et je ne pouvais pas non plus le faire react-native-git-updgradeou react-native upgradeparce que je voulais rester sur RN-0.59 car .60 pose des problèmes pour mes dépendances.

Quoi qu'il en soit, ma situation était qu'il me manquait le fichier 'React / RCTBundleURLProvider.h'. J'avais déjà React disponible dans mes schémas. Ce n'était pas dans mon répertoire de bibliothèques. J'ai vérifié les paramètres de construction de ma cible .

À l'intérieur des dépendances de cible, j'avais également React.

J'ai supprimé la dépendance cible 'React', puis rajouté. dossiers de construction nettoyés, projet reconstruit. ça a marché.


Pas sûr que cela compte, mais il y a une faute de frappe dans: react-native-git-updgrade
Josh

0

J'utilise React Native 0.61. J'ai créé une extension de partage et j'obtenais cette erreur. J'avais besoin de remplacer:

#import "RCTBundleURLProvider.h"

avec

#import "React/RCTBundleURLProvider.h"


-2

Assurez-vous que le chemin d'accès à votre projet ne contient aucun espace. Le simple fait de renommer les dossiers et de supprimer des espaces résout le problème pour moi.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.