Fichier `React / RCTBridgeModule.h` introuvable


115

Obtenir cette erreur lors de la création d'une application iOS native de réaction sur xcode.

entrez la description de l'image ici

J'ai commencé à obtenir cette erreur après l'installation de npm et la liaison rpm de la bibliothèque react-native-fs . Mais après avoir recherché une solution en ligne, j'ai remarqué que de nombreuses personnes obtiennent la même erreur lors de l'installation d'autres bibliothèques natives de réaction.

Une solution possible suggérée par beaucoup est d'ajouter ce qui suit sous "Paramètres de construction" -> "Chemins de recherche d'en-tête".

$(SRCROOT)/../node_modules/react-native/React - (récursif)

Mais pas de chance avec cette solution, toujours la même erreur


J'obtiens la même erreur avec la v0.41.2, cela devrait fonctionner avec <React / RCT ...> mais ce n'est pas le cas: /
pgarciacamou

@camou voyez ma réponse ci-dessous; ça peut aider
Lawrence

@CecilRodriguez Quelle version avez-vous pour react-native-fs ?. Si vous ajoutez manuellement avec XCode, veuillez consulter github.com/itinance/react-native-fs#adding-manually-in-xcode
Shubham Khatri

Je reçois cette erreur: Impossible de résoudre le modulereact-native-webrtc
Ankita

Réponses:


161

Dans mon cas, ce problème particulier s'est produit lorsque j'essayais d'archiver une application native react-native 0.40+ pour iOS (la solution a été trouvée ici: la version fiable ^0.39.2échoue lors de la mise à niveau vers^0.40.0 ).

Ce qui s'est passé, c'est que Xcode essayait de construire les bibliothèques natives de réaction en parallèle et construisait des bibliothèques avec des dépendances de réaction implicites avant de construire la bibliothèque de réaction.

La solution dans mon cas était de:

  1. Désactivez les builds parallèles:

    • Menu Xcode -> Produit -> Schéma -> Gérer les thèmes ...
    • Double-cliquez sur votre application
    • Onglet Build -> décochez Parallelize Build
  2. Ajouter React en tant que dépendance de projet

    • Navigateur de projet Xcode -> faites glisser React.xcodeproj des bibliothèques vers l'arborescence racine
    • Onglet Phases de construction -> Dépendances cibles -> + -> ajouter React

1
J'ai découvert que cela ne se produit que lorsque vous passez à la version 0.40+ native de réaction par le bas. Les projets lancés avec le RN 0.40+ ont déjà des versions parallèles désactivées.
agiaLab

20
Que signifie "glisser vers l'arbre racine"? Et l'onglet "Phases de construction" ... est-ce les phases de construction de React.xcodeproj?
GreenAsJade

2
Lorsque ce bug apparaît après la création d'une nouvelle cible, l'étape 1 suffit :)
Kepedizer

2
Comment gérez-vous un projet expulsé de l'Expo? Je n'ai React.xcodeproj nulle part, React est dans les dépendances Podfile
Sebastien Lorber

1
@SebastienLorber ouvrez node_modules et faites glisser le projet de réaction à partir de là
Ramon Canales

35

Assurez-vous de désactiver Parallelise Buildet d'ajouter une Reactcible au-dessus de votre cible

entrez la description de l'image ici


Je l'ai compris par moi-même après la première réponse, mais bouger la réaction a fait l'affaire! J'ai dû réaliser ce que cela signifiait réellement pour le processus de construction
njoye

1
Je m'arrachais les cheveux et je pensais à ce que je faisais de mal après avoir ajouté la cible React, mais la déplacer vers le haut a fait l'affaire. @njoye pourriez-vous expliquer ce que cela signifie dans le processus de construction? Je vous remercie!
Eugene Kim

@EugeneKim l'ordre des éléments dans les listes est la manière d'Apple d'afficher l'ordre chronologique (cela me f * s toujours souvent, sur OSX comme sur iOS). Donc, mettre la cible "React" avant "App" construira le code de "React" avant le vôtre. Puisque votre propre code utilise la cible React, cela semble avoir une incidence sur sa capacité à être compilée. Il y a probablement des fichiers en cours de construction qui sont ensuite utilisés dans votre cible.
njoye

Je veux utiliser la fonctionnalité de construction parallèle pour réduire le temps de construction
utkarsh-devops

25

CORRECTIF RAPIDE (pas le meilleur)

Modifiez les lignes d'en-tête natives de la réaction d'importation:

 #import <React/RCTBridgeModule.h>
 #import <React/RCTLog.h>

À:

 #import "RCTBridgeModule.h"
 #import "RCTLog.h"

Voici un exemple de modifications que j'ai dû apporter à la bibliothèque que j'essayais d'utiliser: Ferme # 46 - Fichier 'RCTBridgeModule.h' introuvable .


16
Si vous lisez attentivement les notes de publication, je pense que c'est en fait le contraire - la nouvelle / approuvée est-elle #import <React/RCT...h>? commettez ici
utilisateur

1
Je sais que cela semble en arrière par rapport à ce que la documentation recommande, mais le format spécifié a #import "RCTBridgeModule.h"vraiment mieux fonctionné pour moi aujourd'hui.
paws

L'erreur pour moi est signalée dans le fichier RCTFileReaderModule.h. J'ai changé l'instruction #import comme suggéré mais cela n'a pas aidé. Je vois dans la demande d'extraction de repo liée que la modification a été effectuée dans RNFSManager.h et RNFSManager.m. J'ai essayé de le créer dans ces deux fichiers mais cela n'a pas aidé non plus. Une idée de ce que je fais mal?
Yossi le

12

Changement

  #import "RCTBridgeModule.h"

à

 #import "React/RCTBridgeModule.h"

1
Merci beaucoup!! J'avais passé des heures à chercher la solution. Mais cette solution était le sauveur. Merci!
Abhirup Mukherjee

3

Pour les utilisateurs qui ont obtenu cette erreur après la mise à niveau de React Native vers 0.40+, vous devrez peut-être exécuter react-native upgradesur la ligne de commande.


5
J'essaye ça maintenant. Qu'en est-il d'utiliser à la place react-native-git-upgrade ?
pgarciacamou

Oui, c'est l'autre option. Je pense qu'ils fonctionneront tous les deux.
lawrence

3

Si Libraries/React.xcodeprojsont rouges dans xcode, réinstallez node_modules

rm -rf node_modules && yarn

Mon projet nouvellement créé à partir de react-native 0.46.3 était rouge: SI ont npm 5.3.0 et yarn 0.24.5 quand j'ai fait réagir-native init


Merci, je poussais mon projet vers github. Et lors du clonage à nouveau, il me manquait les bibliothèques React qui apparaissaient en rouge. votre commande fonctionne. 👍
Rifinio

2

Les dernières versions des bibliothèques natives de réaction comme expliqué dans les articles précédents et ici ont des changements de compatibilité de rupture. Si vous ne prévoyez pas encore de mettre à niveau vers react-native 0.40+, vous pouvez forcer l'installation de la version précédente de la bibliothèque, par exemple avec react-native-fs:

npm install --save -E react-native-fs@1.5.1

2

J'ai pu créer un débogage, mais je n'ai pas pu créer une archive.

J'ai résolu ce problème en faisant glisser React.xcodeprojtrouvé dans / node_modules / react-native / React vers mon répertoire racine dans Xcode, puis j'ai ajouté React en tant que dépendance cible dans les phases de construction> dépendances cibles.


Il n'y a pas React.xcodeprojdedans /node_modules/react-native/React.
Andrew Koster le

@AndrewKoster Je rencontre le même problème
Cecil Rodriguez

@CecilRodriguez J'ai réussi à résoudre ce problème lors de la compilation dans Xcode, en ajoutant des Cocoapods et en ajoutant React en tant que pod dans le Podfile. Cependant, une fois que j'essaye d'utiliser la bibliothèque compilée dans react-native run-ios, j'obtiens des erreurs de compilation qui ne se produisent pas dans Xcode. L'absence totale de documentation pertinente est frustrante.
Andrew Koster le

1
@Yossi Non, pas encore. Toutes les tentatives que j'ai essayées n'ont pas fonctionné.
Cecil Rodriguez le

1
@Yossi Non, j'ai essayé le vôtre. Pas de chance. Cela a quelque chose à voir avec mon module natif je pense
Cecil Rodriguez

2

Après React Native 0.60, ce problème est souvent causé par une bibliothèque liée mélangée à la nouvelle fonctionnalité de «liaison automatique». Cela le corrige pour moi

Dissocier l'ancienne bibliothèque à l'aide de

$ react-native unlink react-native-fs

Actualiser l'intégration des pods entièrement en utilisant

$ pod deintegrate && pod install

Maintenant, rechargez votre espace de travail et effectuez une nouvelle génération.


1

Cette erreur est apparue pour moi après avoir exécuté la pod installcommande pour les nouvelles dépendances. Parallèlement à ceux-ci, React avait également été installé. Par conséquent, Xcode était probablement confondu avec le chemin. J'ai supprimé ces lignes de PodFile et l'erreur a disparu. Veuillez noter que ceux supprimés d'ici étaient déjà liés dans Xcode.

target 'app' do

  pod 'GoogleMaps'
  pod 'Firebase/Auth', '~> 6.3.0'
  pod 'Firebase/Database', '~> 6.3.0'

  # Removed four pods below and it worked.

  pod 'react-native-image-picker', :path => '../node_modules/react-native-image-picker'

  pod 'ReactNativePermissions', :path => '../node_modules/react-native-permissions'

  pod 'react-native-image-resizer', :path => '../node_modules/react-native-image-resizer'

  pod 'RNFS', :path => '../node_modules/react-native-fs'

  end

1

Pour moi, cette erreur s'est produite lorsque j'ai ajouté un nouveau schéma / cible ( app.staging ) dans l'application et installé des pods à l'aide de l'installation de pod.

Ce problème se produit car les pods ne sont pas partagés pour toutes les cibles. Je dois donc ajouter une cible nouvellement ajoutée ( app.staging ) dans le Podfile .

Voici mon Podfile.

platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

target 'app' do
  # Pods for app
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"

  target 'appTests' do
    inherit! :search_paths
    # Pods for testing
  end

  # Pods for staging app // important line below
  target 'app.staging'

  use_native_modules!
end

1

Je reçois cette erreur dans tout nouveau module que je crée avec create-react-native-module . Aucune des solutions affichées n'a fonctionné pour moi.

Ce qui a fonctionné pour moi, c'est d'abord de m'assurer de l'exécuter yarndans le dossier du module nouvellement créé afin de créer node_modules/(cette étape est probablement évidente). Ensuite, dans XCode, sélectionnez Product -> Scheme -> React au lieu de la sélection par défaut de MyModuleName.


+1, il est important d'ajouter pour les autres nouveaux dans le développement de modules que vous ne verrez pas les autres schémas tant que vous n'aurez pas créé un fichier pod valide et exécuté pod install. create-react-native-module ne semble pas faire cela pour vous. M'a raccroché pendant un moment. Mais cela a fonctionné pour moi une fois que j'ai créé un podfile valide et exécuté l'installation.
Elliot Rodriguez le

1

Accédez au dossier iOS de votre projet et installez le pod -

$ pod install

Si vous obtenez une erreur lors de l'installation de la commande de type pod-

$ xcode-select -p

Le résultat doit être - /Applications/Xcode.app/Contents/Developer

Si le chemin est incorrect, ouvrez votre projet iOS dans Xcode et accédez à: Xcode-> préférences-> outils de ligne de commande-> sélectionnez Xcode

Et installez à nouveau le pod, votre problème sera résolu.



0

Si vous souhaitez le créer à partir de votre éditeur, ouvrez également SMobile.xcscheme

Et changer parallelizeBuildables = "NO"


0

Pour moi, aucune des solutions ci-dessus n'a fonctionné et en dessous, c'est ce qui a fonctionné (j'avais déjà vérifié Parallelize Buildet ajouté React)

1. Open XCode --> To Libraries add `$LibraryWhichDoesNotWork.xcodeproj$`
2. Then for your app in the `Build Phases` add to the `Link Binary with Libraries` the file `lib$LibraryWhichDoesNotWork$.a`

0

J'ai rencontré ce problème lors de la mise à niveau de la version 0.58.4 vers la nouvelle version 0.60.4 native de réaction. Rien de ce que j'ai trouvé sur Internet ne m'a aidé, mais j'ai réussi à le faire fonctionner:

Accédez aux paramètres de construction, recherchez «Chemins de recherche d'en-tête», sélectionnez l'entrée, appuyez sur le bouton SUPPRIMER.

J'ai eu ces valeurs remplacées et on dirait qu'elles sont revenues aux valeurs par défaut après la suppression. Cocoapods s'en plaignait également avec des messages dans le terminal après pod install:

[!] The `app [Release]` target overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Target Support Files/Pods-app/Pods-app.release.xcconfig'. This can lead to problems with the CocoaPods installation

0

J'ai rencontré ce problème après avoir rédigé un manuel react-native linksur une dépendance qui ne prenait pas en charge la liaison automatique sur RN 0.59+

La solution était de sélectionner le fichier xcodeproj sous le dossier Bibliothèques dans Xcode, puis dans Paramètres de construction, modifier les chemins de recherche d'en-tête pour ajouter ces deux (récursifs):

$(SRCROOT)/../../../ios/Pods/Headers/Public/React-Core
$(SRCROOT)/../../../ios/Pods/Headers/Public

0

Si vous souhaitez garder Parallelise Build activé et éviter les problèmes d'en-tête manquants, fournissez une étape de pré-construction dans votre schéma pour placer les en-têtes de réaction dans la zone de données dérivées. Notez que les paramètres de construction proviennent du projet React dans ce cas. Oui, ce n'est pas une chose de beauté, mais cela fait le travail et réduit également beaucoup de temps sur les constructions. La sortie de l'étape de pré-construction se termine dans prebuild.log. Les en-têtes exacts que vous devrez copier dépendront des dépendances natives de réaction de votre projet, mais vous en obtiendrez le jist.

Modifier le schéma => Construire

Récupérez le répertoire de données dérivé des variables d'environnement et copiez les en-têtes de réaction requis.

#build_prestep.sh (chmod a+x)
derived_root=$(echo $SHARED_DERIVED_FILE_DIR|sed 's/DerivedSources//1')
react_base_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Base/#1')
react_view_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Views/#1')
react_modules_head=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Modules/#1')
react_netw_headers=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Network/#1')
react_image_header=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Image/#1')

echo derived root = ${derived_root}
echo react headers = ${react_base_headers}

mkdir -p ${derived_root}include/React/

find  "${react_base_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_view_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_modules_head}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_netw_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_image_header}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;

Le script est appelé lors d'un nettoyage de construction - ce qui n'est pas idéal. Dans mon cas, il y a une variable env qui change, me permettant de quitter le script plus tôt lors d'un nettoyage.

if [ "$RUN_CLANG_STATIC_ANALYZER" != "NO" ] ; then
    exit 0 
fi

0

Il vous suffit d'installer le pod, si le fichier pod existe, tapez simplement

pod install

sinon: donc d'abord,

pod init

puis,

pod install

dans le terminal. et vous êtes prêt à partir.


-1

Ce que vous pouvez faire pour bien faire les choses est:

1) npm uninstall reat-native-fspour désinstaller la bibliothèque

2) npm unlink react-native-fspour dissocier la bibliothèque

Maintenant, la bibliothèque est supprimée avec succès et réinstallez maintenant la bibliothèque dans votre projet et cette fois, liez tout manuellement. Parfois, la liaison automatique provoque cette erreur.

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.