`React / RCTBridgeModule.h` Datei nicht gefunden


114

Dieser Fehler wird beim Erstellen einer reaktionsnativen iOS-App auf xcode angezeigt.

Geben Sie hier die Bildbeschreibung ein

Dieser Fehler wurde nach der npm-Installation und der rpm-Verknüpfung der reaktionsnativen fs- Bibliothek angezeigt . Aber nachdem ich online nach einer Lösung gesucht hatte, bemerkte ich, dass viele Leute den gleichen Fehler erhalten, wenn sie andere native React-Bibliotheken installieren.

Eine mögliche Lösung , die von vielen vorgeschlagen wird, ist das Hinzufügen der folgenden Elemente unter "Build-Einstellungen" -> "Header-Suchpfade".

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

Aber kein Glück mit dieser Lösung, immer noch den gleichen Fehler


Ich erhalte den gleichen Fehler mit v0.41.2, es sollte mit <React / RCT ...> funktionieren, aber es funktioniert nicht: /
pgarciacamou

@ Camou siehe meine Antwort unten; es kann helfen
Lawrence

@ CecilRodriguez Welche Version hast du für react-native-fs?. Wenn Sie manuell mit XCode hinzufügen, überprüfen Sie bitte github.com/itinance/react-native-fs#adding-manually-in-xcode
Shubham Khatri

Ich react-native-webrtc
erhalte die folgende

Antworten:


159

In meinem Fall trat dieses spezielle Problem auf, als ich versuchte, eine reaktionsnative App mit 0,40+ für iOS zu archivieren (Lösung wurde hier gefunden: Zuverlässiges Build-on ^0.39.2schlägt beim Upgrade auf fehl^0.40.0 ).

Was geschah, war, dass Xcode versuchte, die reaktionsnativen Bibliotheken parallel zu erstellen, und Bibliotheken mit impliziten Reaktionsabhängigkeiten erstellte, bevor die Reaktionsbibliothek tatsächlich erstellt wurde.

Die Lösung in meinem Fall war:

  1. Deaktivieren Sie die parallelen Builds:

    • Xcode-Menü -> Produkt -> Schema -> Sheme verwalten ...
    • Doppelklicken Sie auf Ihre Bewerbung
    • Registerkarte "Erstellen" -> Deaktivieren Sie "Build parallelisieren"
  2. Hinzufügen reagieren als Projektabhängigkeit

    • Xcode Project Navigator -> Ziehen Sie React.xcodeproj aus den Bibliotheken in den Stammbaum
    • Registerkarte "Phasen erstellen" -> Zielabhängigkeiten -> + -> Reaktion hinzufügen

1
Ich habe festgestellt, dass dies nur passiert, wenn Sie von unten auf reaktionsnatives 0.40+ upgraden. Bei Projekten, die mit dem RN 0.40+ initiiert wurden, sind parallele Builds bereits deaktiviert.
AgiaLab

20
Was bedeutet "Zum Stammbaum ziehen"? Und die Registerkarte "Build-Phasen" ... sind dies die Build-Phasen von React.xcodeproj?
GreenAsJade

2
Wenn dieser Fehler nach der Erstellung eines neuen Ziels auftritt, ist Schritt 1 ausreichend :)
Kepedizer

2
Wie gehen Sie mit einem ausgeworfenen Expo-Projekt um? Ich habe nirgendwo React.xcodeproj, React ist in Podfile-Abhängigkeiten
Sebastien Lorber

1
@SebastienLorber öffne node_modules und ziehe das Reaktionsprojekt von dort
Ramon Canales

35

Stellen Sie sicher, dass Sie das Ziel über Ihrem Ziel deaktivieren Parallelise Buildund hinzufügenReact

Geben Sie hier die Bildbeschreibung ein


Ich habe es nach der ersten Antwort selbst herausgefunden, aber nach oben zu gehen hat den Trick getan! Musste erkennen, was das eigentlich für den Bauprozess bedeutete
njoye

1
Zog mir die Haare aus und überlegte, was ich falsch gemacht hatte, nachdem ich das React-Ziel hinzugefügt hatte, aber es nach oben zu bewegen, war der Trick. @njoye könntest du erklären, was dies im Build-Prozess bedeutet? Danke dir!
Eugene Kim

@EugeneKim Die Reihenfolge der Elemente in Listen ist Apples Art, die chronologische Reihenfolge anzuzeigen (dies ist mir unter OSX und iOS immer noch häufig der Fall). Wenn Sie also das Ziel "Reagieren" vor "App" setzen, wird der Code aus "Reagieren" vor Ihrem eigenen Code erstellt. Da Ihr eigener Code das React-Ziel verwendet, scheint dies Auswirkungen darauf zu haben, ob es erstellt werden kann. Es werden wahrscheinlich Dateien erstellt, die dann in Ihrem Ziel verwendet werden.
Njoye

Ich möchte die parallele Build-Funktion verwenden, um die Build-Zeit zu reduzieren
utkarsh-devops

25

QUICK FIX (nicht das beste)

Ändern Sie die reaktionsreaktiven nativen Headerzeilen:

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

Zu:

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

Hier ist ein Beispiel für Änderungen, die ich für die Bibliothek vornehmen musste, die ich verwenden wollte: Schließt # 46 - Datei 'RCTBridgeModule.h' nicht gefunden .


16
Wenn Sie die Versionshinweise sorgfältig lesen, denke ich, dass es tatsächlich umgekehrt ist - der neue / genehmigte Weg ist #import <React/RCT...h>? hier festschreiben
Benutzer

1
Ich weiß, es scheint rückwärts zu sein, was die Dokumente empfehlen, aber das angegebene Format #import "RCTBridgeModule.h"hat heute für mich wirklich besser funktioniert.
Pfoten

Der Fehler ist für mich in der Datei RCTFileReaderModule.h gekennzeichnet. Ich habe die # import-Anweisung wie vorgeschlagen geändert, aber es hat nicht geholfen. Ich sehe in der verknüpften Repo-Pull-Anfrage, dass die Änderung in RNFSManager.h und RNFSManager.m vorgenommen wurde. Ich habe versucht, es in diesen beiden Dateien zu machen, aber es hat auch nicht geholfen. Irgendeine Idee, was ich falsch mache?
Yossi

12

Veränderung

  #import "RCTBridgeModule.h"

zu

 #import "React/RCTBridgeModule.h"

1
Vielen Dank!! Ich hatte stundenlang nach der Lösung gesucht. Aber diese Lösung war der Retter. Vielen Dank!
Abhirup Mukherjee

3

Für Zuschauer, die diesen Fehler nach dem Upgrade von React Native auf 0.40+ erhalten haben, müssen Sie möglicherweise in react-native upgradeder Befehlszeile ausgeführt werden.


5
Ich versuche das gerade. Was ist mit React-Native-Git-Upgrade ?
Pgarciacamou

Richtig, das ist die andere Option. Ich denke, sie werden beide arbeiten.
Lawrence

3

Wenn Libraries/React.xcodeprojxcode rot ist, installieren Sie node_modules neu

rm -rf node_modules && yarn

Mein neu erstelltes Projekt aus React-Native 0.46.3 war rot: SI hat npm 5.3.0 und Garn 0.24.5, als ich React-Native Init gemacht habe


Danke, ich habe mein Projekt auf Github gebracht. Und beim erneuten Klonen fehlten mir die rot angezeigten React-Bibliotheken. Ihr Befehl funktioniert. 👍
Rifinio

2

Die neuesten Versionen reaktionsnativer Bibliotheken, wie in früheren Beiträgen erläutert , haben hier wichtige Kompatibilitätsänderungen. Wenn Sie noch kein Upgrade auf React-Native 0.40+ planen, können Sie die Installation der vorherigen Version der Bibliothek erzwingen, z. B. mit React-Native-fs:

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

2

Ich konnte ein Debug erstellen, aber kein Archiv erstellen.

Ich habe dieses Problem gelöst, indem ich das React.xcodeprojin / node_modules / react-native / React gefundene Element in mein Stammverzeichnis in Xcode gezogen und dann React als Zielabhängigkeit in Erstellungsphasen> Zielabhängigkeiten hinzugefügt habe.


Es gibt keine React.xcodeprojin /node_modules/react-native/React.
Andrew Koster

@ AndrewKoster Ich habe das gleiche Problem
Cecil Rodriguez

@CecilRodriguez Ich habe es geschafft, dies beim Kompilieren in Xcode zu beheben, indem ich Cocoapods hinzugefügt und React als Pod in die Poddatei hinzugefügt habe. Wenn ich jedoch versuche, die kompilierte Bibliothek in zu verwenden react-native run-ios, werden Kompilierungsfehler angezeigt, die in Xcode nicht auftreten. Das völlige Fehlen relevanter Unterlagen ist frustrierend.
Andrew Koster

1
@ Yossi Nein, noch nicht. Alle Versuche, die ich versucht habe, haben nicht funktioniert.
Cecil Rodriguez

1
@ Yossi Nein, ich habe es bei dir versucht. Kein Glück. Es hat etwas mit meinem nativen Modul zu tun, glaube ich
Cecil Rodriguez

2

Nach React Native 0.60 wird dieses Problem häufig durch eine verknüpfte Bibliothek verursacht, die mit der neuen Funktion "Automatische Verknüpfung" gemischt ist. Das behebt es für mich

Trennen Sie die Verknüpfung der alten Bibliothek mit

$ react-native unlink react-native-fs

Aktualisieren Sie die Pods-Integration vollständig mit

$ pod deintegrate && pod install

Laden Sie nun Ihren Arbeitsbereich neu und erstellen Sie einen sauberen Build.


1

Dieser Fehler trat bei mir auf, nachdem ich den pod installBefehl für die neuen Abhängigkeiten ausgeführt hatte. Zusammen mit diesen war auch React installiert worden. Daher wurde Xcode wahrscheinlich für den Pfad verwechselt. Ich habe diese Zeilen aus PodFile entfernt und der Fehler war verschwunden. Bitte beachten Sie, dass die von hier entfernten bereits in Xcode verlinkt waren.

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

Bei mir trat dieser Fehler auf, als ich der App ein neues Schema / Ziel ( app.staging ) hinzufügte und Pods mithilfe der Pod-Installation installierte.

Dieses Problem tritt auf, weil Pods nicht für alle Ziele gemeinsam genutzt werden. Daher muss ich dem Podfile ein neu hinzugefügtes Ziel ( app.staging ) hinzufügen .

Hier ist mein 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

Ich erhalte diesen Fehler in jedem neuen Modul, das ich mit create-react-native-module erstelle . Keine der veröffentlichten Lösungen hat bei mir funktioniert.

Was für mich funktioniert hat, war zunächst sicherzustellen, dass es yarnim neu erstellten Modulordner ausgeführt wird, um es zu erstellen node_modules/(dieser Schritt ist wahrscheinlich offensichtlich). Wählen Sie dann in XCode Produkt -> Schema -> Reagieren anstelle der Standardauswahl von MyModuleName.


+1, es ist wichtig, für andere, die neu in der Modulentwicklung sind, hinzuzufügen, dass Sie die anderen Schemata erst sehen, wenn Sie eine gültige Poddatei erstellen und ausführen pod install. create-react-native-module scheint dies nicht für Sie zu tun. Habe mich für eine Weile aufgelegt. Dies funktionierte jedoch für mich, nachdem ich eine gültige Poddatei erstellt und die Installation ausgeführt hatte.
Elliot Rodriguez

1

Gehen Sie in Ihrem Projekt zum iOS-Ordner und installieren Sie pod -

$ pod install

Wenn bei der Installation des Pod-Typs ein Fehler auftritt, geben Sie Folgendes ein:

$ xcode-select -p

Das Ergebnis sollte - /Applications/Xcode.app/Contents/Developer sein

Wenn der Pfad falsch ist, öffnen Sie Ihr iOS-Projekt in Xcode und gehen Sie zu: Xcode-> Einstellungen-> Befehlszeilentools-> Wählen Sie Xcode aus

Und installieren Sie den Pod erneut. Ihr Problem wird behoben.



0

Wenn Sie es von Ihrem Editor aus erstellen möchten, öffnen Sie auch SMobile.xcscheme

Und ändern parallelizeBuildables = "NO"


0

Für mich hat keine der oben genannten Lösungen funktioniert und unten ist es, was funktioniert hat (ich hatte bereits ausgecheckt Parallelize Buildund hinzugefügt 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

Ich habe dieses Problem beim Upgrade von 0.58.4 auf die neue reaktionsnative Version 0.60.4 festgestellt. Nichts von dem, was ich im Internet gefunden habe, hat mir geholfen, aber ich habe es geschafft, es zum Laufen zu bringen:

Gehen Sie zu Build Settings, suchen Sie nach 'Header Search Paths', wählen Sie den Eintrag aus und drücken Sie die DELETE-Taste.

Ich hatte diese Werte überschrieben und es sieht so aus, als wären sie nach dem Löschen auf die Standardeinstellungen zurückgefallen. Auch Cocoapods beschwerte sich darüber mit Nachrichten im Terminal nach 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

Ich bin auf dieses Problem react-native linkgestoßen, nachdem ich ein Handbuch zu einer Abhängigkeit erstellt hatte, die die automatische Verknüpfung auf RN 0.59+ nicht unterstützte

Die Lösung bestand darin, die xcodeproj-Datei im Ordner Libraries in Xcode auszuwählen und dann in den Build-Einstellungen die Header-Suchpfade zu ändern, um diese beiden (rekursiv) hinzuzufügen:

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

0

Wenn Sie Parallelise Build aktiviert lassen und die fehlenden Headerprobleme vermeiden möchten, geben Sie in Ihrem Schema einen Vorbereitungsschritt an, um die Reaktionsheader in den Bereich für abgeleitete Daten zu verschieben. Beachten Sie, dass die Build-Einstellungen in diesem Fall aus dem React-Projekt stammen. Ja, es ist keine Sache von Schönheit, aber es erledigt die Arbeit und spart auch viel Zeit für die Builds. Die Ausgabe des Prebuild-Schritts endet in prebuild.log. Die genauen Header, die Sie kopieren müssen, hängen von den reaktionsabhängigen Abhängigkeiten Ihres Projekts ab.

Schema bearbeiten => Erstellen

Rufen Sie das abgeleitete Datenverzeichnis aus den Umgebungsvariablen ab und kopieren Sie die erforderlichen Reaktionsheader.

#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/" \;

Das Skript wird während einer Build-Bereinigung aufgerufen - was nicht ideal ist. In meinem Fall gibt es eine env-Variable, die sich ändert, sodass ich das Skript während einer Bereinigung vorzeitig beenden kann.

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

0

Sie müssen nur pod installieren, wenn Pod-Datei existiert, geben Sie einfach ein

pod install

wenn nicht: also zuerst

pod init

dann,

pod install

im Terminal. und du bist gut zu gehen.


-1

Was Sie tun können, um es richtig zu machen, ist:

1) npm uninstall reat-native-fsBibliothek deinstallieren

2) npm unlink react-native-fsum die Verknüpfung der Bibliothek aufzuheben

Jetzt wurde die Bibliothek erfolgreich entfernt und jetzt installieren Sie die Bibliothek erneut in Ihrem Projekt und verknüpfen Sie diesmal alles manuell. Manchmal verursacht die automatische Verknüpfung diesen Fehler.

Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.