File "RCTBundleURLProvider.h" non trovato - AppDelegate.m


124

Sto cercando di eseguire la mia app React Native in XCode e continuo a ricevere questo errore. Non riesco a capire come risolvere il problema. Eventuali suggerimenti?

Schermata di errore in XCode:

immagine dello schermo


Suggerirei prima di applicare qualsiasi modifica semplicemente pulire il progetto e provare a eseguirlo perché la stessa cosa accade nel mio caso. Pulisco il mio progetto, lo eseguo e funziona.
bittu

Dovresti assolutamente cambiare la risposta giusta! La risposta di @mark è quella giusta e tutti vengono per questo.
Serdar Değirmenci

Risposte:


64

Elimina i moduli del nodo, quindi esegui npm install(o meglio ancora filato) e dopo che tutto è terminato il download, esegui react-native upgradeche dovrebbe darti la possibilità di sostituire i vecchi file con quelli del modello, così facendo ricolleghi le tue dipendenze native in react-native che dovrebbe risolvere il tuo problema. Ovviamente non dimenticare di pulire il tuo progetto in Xcode.


5
Puoi utilizzare il nuovo strumento di aggiornamento basato su Git poiché ha risolto automaticamente i conflitti. Esegui "npm install -g react-native-git-upgrade" seguito da "react-native-git-upgrade".
bitsand

2
Ho seguito i suggerimenti ma nogo .. ho la versione 0.41.2 di React Native c'è qualcuno che è in grado di risolvere questo problema nella versione 0.41.2? Grazie.
joemalski

2
anche questo non ha funzionato per me. utilizzando xcode 8.2.1 e reagire nativo 0.41.2
Terry Ray

1
Ho provato questo e ha spazzato via alcune importanti impostazioni del progetto. Sto creando un'estensione azione e dopo aver eseguito react-native upgradetutte le mie impostazioni di compilazione sono state eliminate.
Shane O Sullivan

1
aggiungerei il file "elimina il filato.lock" in modo da poter utilizzare "installazione npm"
user1709076

247

xcode Product-> Scheme-> Manage Schemes fai clic su "+" nel Target per selezionare "React" e impostare React come condiviso.


10
Ho premuto "+" e non c'è "React" da selezionare. Viene visualizzata una finestra di dialogo con "Target: MyApp" e Nome: MyApp. "Niente dice React o shared.
Pete Alvin

Questo è successo a me dopo aver installato cocopods che ha creato un file xcworkspace. Il mio xcodeproj esistente non aveva "React" come opzione, ma xcworkspace sì.
AdamG

@PeteAlvin ho eseguito Run "npm install -g react-native-git-upgrade seguito da" react-native-git-upgrade "e poi mi ha mostrato l'opzione di react
Paul Fitzgerald

1
Dopo averlo fatto, la build è riuscita, ma Run non è attivo in Xcode dopo di che
Lucky_girl

Grazie mille. Mi chiedo perché questa non sia la soluzione accettata.
Gaurav Grover,

19

Per tutti coloro che utilizzano React Native 0.40.0 o versioni successive, le importazioni di intestazioni hanno un cambiamento importante da RN 0.40.0 e si traducono in molti errori di file .h non trovati. react-native-git-upgraderisolto il problema per me durante il debug ma la compilazione non riesce nel rilascio / archivio.

Sto usando RN 0.42.3 con cocoapods e Xcode 8.2.1

Per risolvere completamente questo problema, vai su Xcode> Prodotto> Schema> Modifica schema>

  1. Deseleziona Parallelize Build inserisci qui la descrizione dell'immagine
  2. Fare clic sul pulsante + in Targets e aggiungere React inserisci qui la descrizione dell'immagine
  3. Trascina la reazione aggiunta in cima all'elenco in Target. inserisci qui la descrizione dell'immagine

Ora pulisci il progetto e crea


4
Questo non ha risolto per me, reagire v.0.44.0
Justus Eapen

17

Nessuno degli altri suggerimenti stava correggendo il mio errore, ma questo lo ha fatto.

1 - Crea Podfile

Crea un file denominato ios/Podfileall'interno della tua app reattiva nativa con i seguenti contenuti:

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

Esegui il comando pod installdall'interno della cartella ios.

3 - Ripristina XCode

Riavvia XCode e l'errore dovrebbe essere sparito.


Questo risolve il problema in una certa misura. Ma quello che ho scoperto è che le nuove configurazioni non sembrano rispettare l'ordine di compilazione, quindi non stanno prendendo script personalizzati. Fondamentalmente questo è un problema con react-native o react-native + xcode
prog_24

9

Mi sono imbattuto in questo problema dopo il mio primo tentativo di eseguire una build React in XCode, e tutto ciò che dovevo fare era effettivamente compilare ed eseguire per eliminare l'errore (dopo aver scelto una squadra e un corretto provisioning). A volte XCode mostra errori che non sono realmente errori fino a quando non compila e collega le cose la prima volta.


Anch'io. È strano, basta compilare ed eseguire il debug, gli errori sono scomparsi. Non so perché
Zhang Buzz,

@PaulFitzgerald - Una licenza per cosa? Non credo di aver bisogno di ottenere una licenza ...
Dave Cole

8

La soluzione che funziona per me è condividere lo Reactschema.

Se non hai uno schema React, creane uno nuovo Selecting scheme menu -> Manage Scheme -> + -> choose React, quindi contrassegna lo schema React come Condiviso

inserisci qui la descrizione dell'immagine

inserisci qui la descrizione dell'immagine inserisci qui la descrizione dell'immagine

Inoltre, se utilizzi Xcode 10, vai a File -> Project Settingse seleziona Sistema di compilazione legacy

inserisci qui la descrizione dell'immagine


1
grazie! A volte è difficile risolvere questo tipo di problemi senza avere una conoscenza dello sviluppo nativo di iOS e Android, penso e degli strumenti con cui vengono utilizzati.
qasimalbaqali

1
@ onmyway133 Vorrei poter votare di più la tua risposta! Grazie
Mohammad Abbas

7

Ho risolto questo problema seguendo i passaggi:

  1. In xcode scegli la radice del progetto.
  2. Trascina React.xcodeprojda Librariesalla radice del progetto.
  3. Fare clic sul nome del progetto (nel mio caso il nome SaleKit) inTARGETS
  4. Scegliere Build Phases
  5. Nel menu a discesa di Target DependenciesaddReact
  6. Ricostruisci o riesegui

inserisci qui la descrizione dell'immagine


1
Questo ha funzionato per me! Uso React-Native-Scheme-Manager, quindi era il mio schema di Staging che non si sarebbe costruito fino a quando non avessi aggiunto questo. In precedenza ha funzionato per mesi, poi improvvisamente non ha funzionato dopo un nuovo clone. Sospetto che i miei intervalli di NPM in package.json siano troppo generosi.

Ha funzionato per me, senza la necessità di trascinare React.xcodeproj fuori dalla cartella Librerie.
ErmannoS

6

Per il mio caso in ReactNative "0.54.2", l'ho risolto con la seguente soluzione

In Xcode select Product->Scheme->Manage Schemes, deseleziona 'YourProject'-tvOS e impostalo su non condiviso


1
Per me funziona, versione reattiva nativa: 0.55.4. Grazie
Adarsh

1
Ha funzionato per me! Ho già cancellato tvOS target e mi sono dimenticato di rimuoverlo come schema! => RN 0,56
BigPun86

4

Soluzione migliore :

Apri "Impostazioni build" per il tuo progetto in Xcode, cerca "Percorso di ricerca intestazione".

Fare doppio clic accanto a "Percorso di ricerca intestazione", dove altre proprietà hanno un "sì" o "no"

Ora aggiungi quanto segue al "Percorso di ricerca dell'intestazione" (in Impostazioni build):

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

Non dimenticare Rendi entrambi ricorsivi.


3

Esegui npm installnella directory del tuo progetto per installare react-nativerisolvendo questo errore.


3

È possibile che il .xcodeprojfile sia in esecuzione dopo l'installazione del pod.

Chiudilo e apri il .xcworkspacefile. Ha funzionato per me.


2

Nella directory di base del progetto che corro:

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

Il risultato è stato:

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

Ho scoperto che il gestore di pacchetti non può essere eseguito quando è in esecuzione un altro processo di confezionamento.

Ho trovato il processo in esecuzione con:

lsof -i :8081

Di me kill 9 ...il processo.

Dopo aver chiuso Xcode, esegui:

npm install

E ho riavviato Xcode, da questo momento tutto funziona come previsto !!


2

Ho avuto lo stesso problema e l'ho risolto posizionando RNFIRMessaging.h sopra React / RCTBundleURLProvider.h

Quindi sembra che assomiglierò a:

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

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

2

Prova quanto segue:

  1. Pulito ( cmd+ shift+ K).
  2. Build core React: seleziona React come schema in Xcode e crealo ( cmd+ B).
  3. Compilare la libreria che non funziona (ad esempio RCTText).
  4. Crea la tua app.

1
Come si costruisce esattamente una libreria?
AlxVallejo

2

fare clic su Prodotto-> Schema-> Gestisci schemi -> +. e quindi aggiungi reagisci come condiviso. assicurati anche che ci sia anche il nome del tuo progetto.


1

Ho riscontrato lo stesso problema, quindi ho eliminato il nodo .Prova a utilizzare questi passaggi

  1. Elimina la cartella node_modules - rm -rf node_modules && npm install
  2. Reimposta cache packager - rm -fr $ TMPDIR / react- * o node_modules / react-native / packager / packager.sh --reset-cache
  3. Orologi watchman trasparenti - watchman watch-del-all

quindi costruisci e guarda


sì, l'ho provato anche sulla versione 0.41.2 di React-Native ancora non funzionante ... qualche input? Grazie.
joemalski

1

Ho scoperto che la mia soluzione a questo problema dopo l'aggiornamento di React consisteva nel modificare la dichiarazione di #import "RCTBundleURLProvider.h"in#import <React/RCTBundleURLProvider.h>


1

Per me sostituzione

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

di

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

nel file AppDelegate.m ha funzionato.



0

Ho provato tutti i suggerimenti e nessuno di loro ha funzionato in ho cancellato il repository e clonato di nuovo e questo funziona per me, quindi il mio suggerimento è di eseguire il backup delle modifiche e di clonare nuovamente il repository che ha funzionato per me.


0

Ho esaminato tutte le risposte sopra menzionate.

Ecco la soluzione che ha funzionato per me:

PASSO 1:

Correre:

npm install react-native-fcm --save 

Ciò si traduce nella creazione della directory nel progetto in node_modules> react-native-fcm

Aggiungi react-native-fcm al tuo progetto

PASSO 2:

È necessario aggiungere '$(SRCROOT)/../node_modules/react-native-fcm/ios'ai percorsi di ricerca dell'intestazione nelle impostazioni di build.

Aggiungi ai percorsi di ricerca dell'intestazione

Questi 2 passaggi hanno funzionato per me per rimuovere l'errore.

Per maggiori dettagli puoi passare attraverso questi link:

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

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


0

Nel mio caso, non ho potuto eliminare node_modules e reinstallare e non ho nemmeno potuto fare react-native-git-updgradeoreact-native upgrade perché volevo rimanere su RN-0.59 perché .60 causa problemi alle mie dipendenze.

Comunque la mia situazione era che mi mancava il file "React / RCTBundleURLProvider.h". Avevo già React disponibile nei miei schemi. Non era nella directory delle mie librerie. Ho controllato il mio obiettivo impostazioni di build del .

All'interno delle dipendenze di destinazione, avevo anche React.

Ho eliminato la dipendenza di destinazione "React", quindi ho aggiunto di nuovo. cartelle di build pulite, progetto ricostruito. ha funzionato.


Non sono sicuro che sia importante, ma c'è un errore di battitura in: react-native-git-updgrade
Josh

0

Sto usando React Native 0.61. Ho creato un'estensione di condivisione e ho ricevuto questo errore. Avevo bisogno di sostituire:

#import "RCTBundleURLProvider.h"

con

#import "React/RCTBundleURLProvider.h"


-2

Assicurati che il percorso del tuo progetto non abbia spazi. Basta rinominare le cartelle e cancellare gli spazi risolve il problema per me.

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.