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

FilosoferKing
la source
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.

Armands Malejevs
la source
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é.

marque
la source
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

Hariks
la source
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.

Erich
la source
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.

Dave Cole
la source
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

onmyway133
la source
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

Robuste
la source
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é

JXLai
la source
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.

Méga zone
la source
3

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

Paul Brittain
la source
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.

Saranjith
la source
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 !!

Oded Regev
la source
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>
Jefferson Filho
la source
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.
Jyson
la source
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.

Eran ou
la source
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

sport
la source
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>

ays0110
la source
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é.

Pankti Shah
la source
0

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

Harkirat Saluja
la source
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.

ragar90
la source
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

Harjot Singh
la source
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é.

Jim
la source
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"
Eric Wiener
la source
-1

vous devez installer react native, en exécution du terminal

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

puis

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

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

Olzh
la source
1
Ce n'est pas une réponse à cette question
S.Hossein Asadollahi
-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.

user5807443
la source