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

Simar
la source
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
agiaLab
la source
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

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

Simar
la source
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"
Mantas Laurinavičius
la source
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.

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

Codler
la source
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
Max Vorobjev
la source
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.

BuffMcBigÉnorme
la source
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.

Peter Theill
la source
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
NightFury
la source
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
maulikdhameliya
la source
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.

Taylor Kline
la source
+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.

Rathore
la source
0

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

Et changer parallelizeBuildables = "NO"

Hadnazzar
la source
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`
Kodeusz
la source
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
Hleb Barylskyi
la source
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
qwertzguy
la source
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
Hermano Mclintock
la source
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.

Abdul Karim Khan
la source
-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.

Codage
la source