web-dev-qa-db-fra.com

React Native / Xcode Upgrade et maintenant RCTConvert.h introuvable

L'application fonctionnait bien sur React Native 0.35.0. Après la mise à jour à la 0.40.0 via react-native-git-upgrade, un certain nombre de problèmes lexicaux/préprocesseurs apparaissent lorsque je tente de créer/exécuter l'application dans XCode.

React/RCTBridgeModule.h' file not found

En cliquant sur le problème, je vois ceci mis en évidence:

#import <React/RCTBridgeModule.h>

Cela ne semble pas être un problème de chemin de recherche.

J'ai essayé de supprimer node_modules et de relancer npm install, mais cela ne résout rien.

51
Robert Schillinger

Comme indiqué par le th0th, il y a un changement radical dans RN 0.40 pour iOS. En bref, les déclarations d'en-tête RN sont mises à jour pour pointer vers le chemin d'inclusion $(BUILT_PRODUCTS_DIR)/include/React.

Pour résoudre le problème, vous devez procéder comme suit:

  1. Dans Xcode, accédez au schéma de projet (Produit -> Schéma -> Gérer le schéma -> double-cliquez sur votre projet).
  2. Cliquez sur l'option 'Construire' dans le volet de gauche.
  3. Décochez la case 'Paralléliser la construction' sous Options de construction.
  4. Puis, dans la section Cibles, cliquez sur le bouton "+" puis recherchez "Réagir". Sélectionnez-le et cliquez sur 'Ajouter'.
  5. 'React' devrait maintenant apparaître sous la section Cibles. Cliquez dessus et faites-le glisser vers le haut pour qu'il s'agisse du premier élément de la liste (avant votre projet).
  6. Nettoyez le projet et construisez.

Remarque: vous pouvez toujours rencontrer des problèmes d’en-tête similaires avec d’autres bibliothèques (par exemple, react-native-fbsdk) faisant référence à ces fichiers .h natifs.

114
max23_

Dans réagit natif 0,40


vous devez remplacer #import "RCTBridgeModule.h" par #import <React/RCTBridgeModule.h>

puis nettoyer et construire à nouveau.

6
Ashok R

Il y a un changement décisif à 0.40, vous pouvez voir les détails ici .

Citant directement à partir des notes de publication:

Cela signifie que toutes les bibliothèques natives iOS ont besoin d'une version de base majeure pour RN 0.40. Nous essayons de minimiser les changements de cette ampleur et nous nous excusons pour tout inconvénient causé.

Ainsi, toutes les bibliothèques iOS natives nécessiteront une mise à jour avant de devenir compatibles avec la version 0.40 de react-native.

3
Gokhan Sari

J'ai eu le même problème. Je l'ai résolu en supprimant la cible Test de mon application dans le schéma de construction.

Ces étapes ont aidé à résoudre mon problème. J'ai essayé les étapes "Décochez paralléliser la construction". Cela n'a pas fonctionné pour moi.

  1. Ouvrez votre projet en XCode.
  2. Ouvrez le dossier Bibliothèques. Vous devriez voir React.xcodeproj et plusieurs RCT * .xcodeproj.
  3. Faites glisser le React.xcodeproj dans chacun des autres projets.
  4. Cliquez sur chaque projet et accédez à l'onglet Build Phases.
  5. Cliquez sur les dépendances cibles et ajoutez React en tant que dépendance cible.
1

Si vous utilisez pod, vous pouvez peut-être essayer cette solution:

Accéder aux chemins de recherche d'en-tête: Pods -> TARGETS -> (YOUR TARGET, like my target is RNGL) -> Build Settings -> All -> Search Paths -> Header Search Paths

ajouter un chemin: "${PODS_ROOT}/Headers/Public/React" non-récursif

1
Xiely_Viomi

Si votre application n'est pas trop grosse, juste

1) rename original app
2) create the same app again react-native init <orig_app_name>
3) copy over all necessary files from your original app to the newly created one
4) adjust the package.json
5) npm install
6) react-native run-<ios|Android>

J'ai passé des heures à trouver où lier les nouvelles bibliothèques, c'était pour le moins une option et un raccourci précieux.

j'espère que ça aide quelqu'un

1
radosch

Voici comment je l'ai fait fonctionner:

  • J'ai nettoyé mon package.json à la dernière version,
  • J'ai fait le tour par @ max23_
  • J'ai remplacé tous les #import '....h' qui provoquaient une erreur sur le #import <React/.....h> correspondant.
0
Romain Aymard

Mise à jour de

importer "RCT/BridgeModule.h"

à

importer "React/RCT/BridgeModule.h"

le nettoyer et construire.

Bien que je ne l’aie pas testé, je suppose que si je n’apportais aucun changement et que je le nettoyais et que je le construisais aurait fait l'affaire.

0
RedEarth

Changer le chemin de:

#import <React/RCTBridgeModule.h>

à:

#import <React/Base/RCTBridgeModule.h>

a travaillé pour moi.

0