Datei "RCTBundleURLProvider.h" nicht gefunden - AppDelegate.m


124

Ich versuche, meine React Native-App in XCode auszuführen, und es wird immer wieder dieser Fehler angezeigt. Ich kann nicht herausfinden, wie das Problem behoben werden kann. Irgendwelche Vorschläge?

Screenshot eines Fehlers in XCode:

Bildschirmfoto


Ich würde vorschlagen, bevor Sie Änderungen vornehmen, einfach Ihr Projekt zu bereinigen und zu versuchen, es auszuführen, da in meinem Fall dasselbe passiert. Ich bereinige einfach mein Projekt und führe es aus und es funktioniert.
Bittu

Sie sollten auf jeden Fall die richtige Antwort ändern! Die Antwort von @mark ist die richtige und jeder kommt dafür.
Serdar Değirmenci

Antworten:


64

Löschen Sie die Knotenmodule, führen Sie sie aus npm install(oder besser noch garn) und führen Sie nach Abschluss des Downloads react-native upgradedie Option aus, alte Dateien durch die Vorlagendateien zu ersetzen, indem Sie Ihre nativen Abhängigkeiten in react-native neu verknüpfen sollte Ihr Problem beheben. Vergessen Sie natürlich nicht, Ihr Projekt in Xcode zu bereinigen.


5
Sie können das neue Upgrade-Tool verwenden, das auf Git basiert, da es Konflikte automatisch löst. Führen Sie "npm install -g react-native-git-upgrade" gefolgt von "react-native-git-upgrade" aus.
Bitsand

2
Ich habe Vorschläge befolgt, aber nogo .. Ich habe reaktionsnative Version 0.41.2. Gibt es jemanden, der dies in Version 0.41.2 beheben kann? Vielen Dank.
Joemalski

2
das hat auch bei mir nicht geklappt. mit xcode 8.2.1 und reagieren native 0.41.2
Terry Ray

1
Ich habe es versucht und es hat einige wichtige Projekteinstellungen umgehauen. Ich react-native upgradeerstelle eine Aktionserweiterung und nach dem Ausführen wurden alle meine Build-Einstellungen gelöscht.
Shane O Sullivan

1
Ich würde hinzufügen 'Löschen Sie die Datei yarn.lock', damit Sie 'npm install' verwenden können
user1709076

247

xcode Produkt-> Schema-> Schemata verwalten Klicken Sie im Ziel auf '+', um "Reagieren" auszuwählen und festzulegen, dass die Reaktion freigegeben wird.


10
Ich drücke '+' und es gibt keine "Reaktion" zur Auswahl. Ein Dialog wird mit "Ziel: MyApp" und Name: MyApp angezeigt. "Nichts sagt Reagieren oder geteilt.
Pete Alvin

Dies geschah mir nach der Installation von Cocopods, die eine xcworkspace-Datei erstellt haben. Mein vorhandenes xcodeproj hatte nicht die Option "Reagieren" als Option, der xcworkspace jedoch.
AdamG

@PeteAlvin Ich habe Run "npm install -g react-native-git-upgrade gefolgt von" react-native-git-upgrade "ausgeführt und dann die Reaktionsoption für mich gezeigt
Paul Fitzgerald

1
Nachdem ich das gemacht habe, war Build erfolgreich, aber Run ist danach in Xcode nicht mehr aktiv
Lucky_girl

Danke vielmals. Ich frage mich, warum dies nicht die akzeptierte Lösung ist.
Gaurav Grover

19

Für alle, die React Native 0.40.0 oder höher verwenden, haben Header-Importe eine wesentliche Änderung gegenüber RN 0.40.0 und führen dazu, dass viele Fehler in der .h-Datei nicht gefunden wurden. react-native-git-upgradeDas Problem wurde beim Debuggen behoben, aber der Build schlägt in Release / Archiv fehl.

Ich verwende RN 0.42.3 mit Cocoapods und Xcode 8.2.1

Um dies vollständig zu beheben, gehen Sie zu Xcode> Produkt> Schema> Schema bearbeiten>

  1. Deaktivieren Sie Build parallelisieren Geben Sie hier die Bildbeschreibung ein
  2. Klicken Sie unter Ziele auf die Schaltfläche + und fügen Sie Reagieren hinzu Geben Sie hier die Bildbeschreibung ein
  3. Ziehen Sie die hinzugefügte Reaktion an den Anfang der Liste in den Zielen. Geben Sie hier die Bildbeschreibung ein

Bereinigen Sie nun das Projekt und erstellen Sie es


4
Dies wurde nicht für mich behoben, reagieren v.0.44.0
Justus Eapen

17

Keiner der anderen Vorschläge hat meinen Fehler behoben, aber dieser hat es geschafft.

1 - Podfile erstellen

Erstellen Sie eine Datei mit dem Namen ios/Podfilein Ihrer reaktionsnativen App mit den folgenden Inhalten:

# 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 - Podfile installieren

Führen Sie den Befehl pod installim ios-Ordner aus.

3 - XCode zurücksetzen

Starten Sie XCode neu und der Fehler sollte behoben sein.


Dies löst das Problem bis zu einem gewissen Grad. Was ich jedoch herausgefunden habe, war, dass neue Konfigurationen die Erstellungsreihenfolge nicht zu berücksichtigen scheinen, sodass sie keine benutzerdefinierten Skripte aufnehmen. Grundsätzlich ist dies ein Problem mit reag-native oder react-native + xcode
prog_24

9

Ich bin auf dieses Problem gestoßen, nachdem ich zum ersten Mal versucht hatte, einen React-Build in XCode auszuführen, und alles, was ich tun musste, war tatsächlich zu erstellen und auszuführen, damit der Fehler behoben wurde (nachdem ich ein Team ausgewählt und die Bereitstellung ordnungsgemäß durchgeführt hatte). Manchmal zeigt XCode Fehler an, die erst dann wirklich fehlerhaft sind, wenn es beim ersten Mal kompiliert und verknüpft wird.


Ich auch. Es ist seltsam, nur bauen und debuggen, die Fehler sind verschwunden. Ich weiß nicht warum.
Zhang Buzz

@PaulFitzgerald - Eine Lizenz für was? Ich glaube nicht, dass ich etwas lizenzieren musste ...
Dave Cole

8

Die Lösung, die für mich funktioniert, ist zu teilen React Schema .

Wenn Sie kein Reaktionsschema haben, erstellen Sie ein neues Schema und Selecting scheme menu -> Manage Scheme -> + -> choose Reactmarkieren Sie das Reaktionsschema als freigegeben

Geben Sie hier die Bildbeschreibung ein

Geben Sie hier die Bildbeschreibung ein Geben Sie hier die Bildbeschreibung ein

Wenn Sie Xcode 10 verwenden, gehen Sie zu File -> Project Settingsund wählen Sie Legacy-Build-System

Geben Sie hier die Bildbeschreibung ein


1
Danke! Manchmal ist es schwierig, diese Art von Problemen zu beheben, ohne Kenntnisse über die native Entwicklung von iOS und Android und die Tools zu haben, mit denen verwendet wird.
Qasimalbaqali

1
@ onmyway133 Ich wünschte, ich könnte Ihre Antwort mehr abstimmen! Vielen Dank
Mohammad Abbas

7

Ich habe dieses Problem mit den folgenden Schritten gelöst:

  1. In xcode wählen Sie Projektstamm.
  2. Ziehen Sie React.xcodeprojausLibraries zum Stammverzeichnis des Projekts.
  3. Klicken Sie auf den Projektnamen (in meinem Fall den Namen SaleKit )TARGETS
  4. Wählen Build Phases
  5. In Dropdown von Target Dependencies hinzufügenReact
  6. Neu erstellen oder erneut ausführen

Geben Sie hier die Bildbeschreibung ein


1
Das hat bei mir funktioniert! Ich verwende den React-Native-Schemes-Manager, und so war es mein Staging-Schema, das erst erstellt wurde, als ich dies hinzufügte. Es hat früher monatelang funktioniert, dann plötzlich nach einem neuen Klon nicht mehr. Ich vermute, meine NPM-Bereiche in package.json sind zu großzügig.

Hat bei mir funktioniert, ohne dass React.xcodeproj aus dem Ordner Libraries gezogen werden muss.
ErmannoS

6

Für meinen Fall in ReactNative "0.54.2" habe ich ihn mit der folgenden Lösung gelöst

Product->Scheme->Manage SchemesDeaktivieren Sie bei der Xcode-Auswahl " YourProject" -tvOS und setzen Sie es auf "Nicht freigegeben"


1
Es funktioniert für mich, reaktionsnative Version: 0.55.4. Vielen Dank
Adarsh

1
Hat für mich gearbeitet! Ich habe das tvOS-Ziel bereits gelöscht und vergessen, es als Schema zu entfernen! => RN 0,56
BigPun86

4

Beste Lösung :

Öffnen Sie "Build Settings" für Ihr Projekt in Xcode und suchen Sie nach "Header Search Path".

Doppelklicken Sie neben "Header-Suchpfad", wo andere Eigenschaften ein "Ja" oder "Nein" haben.

Fügen Sie nun dem "Header-Suchpfad" (unter Build-Einstellungen) Folgendes hinzu:

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

Vergessen Sie nicht, beide rekursiv zu machen.


3

Führen Sie npm installin Ihrem Projektverzeichnis die Installation aus react-native, um diesen Fehler zu beheben .


3

Sie könnten laufen .xcodeproj Datei ausgeführt, nachdem der Pod installiert wurde.

Schließen Sie es und öffnen Sie die .xcworkspaceDatei. Es hat bei mir funktioniert.


2

Im Basisverzeichnis des Projekts führe ich Folgendes aus:

node_modules/react-native/packager/packager.sh --reset-cache

Was dazu geführt hat:

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

Ich habe festgestellt, dass der Paketmanager nicht ausgeführt werden kann, wenn ein anderer Packager-Prozess ausgeführt wird.

Ich fand den Prozess ausgeführt mit:

lsof -i :8081

Als ich kill 9 ... den Prozess.

Nachdem ich Xcode geschlossen habe, führen Sie Folgendes aus:

npm install

Und Xcode wieder gestartet, von diesem Moment an funktioniert alles wie erwartet !!


2

Ich hatte das gleiche Problem und habe es behoben, indem ich RNFIRMessaging.h über React / RCTBundleURLProvider.h platziert habe

So sehe ich aus:

#import "AppDelegate.h"
#import "RNFIRMessaging.h"

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

2

Versuche Folgendes:

  1. Reinigen ( cmd+ shift+ K).
  2. Core React erstellen - Wählen Sie React als Schema in Xcode und erstellen Sie es ( cmd+ B).
  3. Erstellen Sie die fehlerhafte Bibliothek (z. B. RCTText).
  4. Erstellen Sie Ihre App.

1
Wie baut man genau eine Bibliothek auf?
AlxVallejo

2

Klicken Sie auf Produkt-> Schema-> Schemata verwalten -> +. und fügen Sie dann reagieren als freigegeben hinzu. Stellen Sie außerdem sicher, dass auch Ihr Projektname vorhanden ist.


1

Ich hatte das gleiche Problem, als ich den Knoten .try gelöscht habe, um diese Schritte auszuführen

  1. Löschen Sie den Ordner node_modules - rm -rf node_modules && npm install
  2. Packager-Cache zurücksetzen - rm -fr $ TMPDIR / react- * oder node_modules / react-native / packager / packager.sh --reset-cache
  3. Klare Wächteruhren - Wächter Watch-Del-All

dann bauen und sehen


yup ich habe dies auch auf der reaktionsnativen Version 0.41.2 versucht, die immer noch nicht so gut funktioniert ... irgendwelche Eingaben? Vielen Dank.
Joemalski

1

Ich stellte fest, dass mein Fix für dieses Problem nach dem Upgrade von React darin bestand, die Deklaration von #import "RCTBundleURLProvider.h"auf zu ändern#import <React/RCTBundleURLProvider.h>


1

Für mich ersetzen

#import <React/RCTBundleURLProvider.h>
#import <React/RCTRootView.h>

durch

#import <RCTBundleURLProvider.h>
#import <RCTRootView.h>

in AppDelegate.m Datei funktioniert.


0

Wenn Sie nicht ausgeführt npm installhaben, tritt dieses Problem wahrscheinlich auf.


0

Ich habe alle Vorschläge ausprobiert und keiner von ihnen hat funktioniert, als ich das Repo gelöscht und erneut geklont habe, und das funktioniert für mich. Mein Vorschlag ist also, dass Sie Ihre Änderungen bestätigen und das für mich funktionierende Repo erneut klonen.


0

Ich habe alle oben genannten Antworten durchgesehen.

Hier ist die Lösung, die für mich funktioniert hat:

SCHRITT 1:

Lauf:

npm install react-native-fcm --save 

Dies führt dazu, dass das Verzeichnis in Ihrem Projekt unter node_modules> react-native-fcm erstellt wird

Fügen Sie Ihrem Projekt react-native-fcm hinzu

SCHRITT 2:

Sie müssen den '$(SRCROOT)/../node_modules/react-native-fcm/ios'Header-Suchpfaden in den Build-Einstellungen hinzufügen .

Zu den Header-Suchpfaden hinzufügen

Diese 2 Schritte haben bei mir funktioniert, um den Fehler zu beheben.

Für weitere Details können Sie über diese Links gehen:

https://github.com/evollu/react-native-fcm/issues/63

https://github.com/evollu/react-native-fcm/issues/21


0

In meinem Fall konnte ich node_modules nicht löschen und neu installieren, und ich konnte es auch nicht tun react-native-git-updgradeoder react-native upgradeweil ich auf RN-0.59 bleiben wollte, weil .60 Probleme für meine Abhängigkeiten verursacht.

In jedem Fall fehlte mir die Datei 'React / RCTBundleURLProvider.h'. Ich hatte React bereits in meinen Schemata verfügbar. Es war nicht in meinem Bibliotheksverzeichnis. Ich habe die Build-Einstellungen meines Ziels überprüft .

Innerhalb der Zielabhängigkeiten hatte ich dort auch React.

Ich habe die Zielabhängigkeit "Reagieren" gelöscht und dann erneut hinzugefügt. Bereinigte Build-Ordner, neu erstelltes Projekt. es funktionierte.


Ich bin mir nicht sicher, ob es wichtig ist, aber es gibt einen Tippfehler: React-Native-Git-Updgrade
Josh

0

Ich verwende React Native 0.61. Ich habe eine Freigabeerweiterung erstellt und habe diesen Fehler erhalten. Ich musste ersetzen:

#import "RCTBundleURLProvider.h"

mit

#import "React/RCTBundleURLProvider.h"


-2

Stellen Sie sicher, dass der Pfad zu Ihrem Projekt keine Leerzeichen enthält. Nur das Umbenennen von Ordnern und das Löschen von Leerzeichen löst das Problem für mich.

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.