Nie znaleziono pliku „RCTBundleURLProvider.h” - AppDelegate.m


124

Próbuję uruchomić moją aplikację React Native w XCode i ciągle otrzymuję ten błąd. Nie mogę dowiedzieć się, jak rozwiązać ten problem. Jakieś sugestie?

Zrzut ekranu błędu w XCode:

zrzut ekranu


Proponuję przed wprowadzeniem jakichkolwiek zmian po prostu wyczyścić projekt i spróbować go uruchomić, ponieważ to samo dzieje się w moim przypadku. Po prostu czyszczę swój projekt i uruchamiam go i działa.
— bittu

Zdecydowanie powinieneś zmienić właściwą odpowiedź! Odpowiedź @mark jest właściwa i każdy po nią przychodzi.
— Serdar Değirmenci

Odpowiedzi:


64

Usuń moduły węzłów, a następnie uruchom npm install(lub jeszcze lepiej przędzę) i po zakończeniu pobierania wszystkiego uruchom, react-native upgradeco powinno dać ci możliwość zastąpienia starych plików szablonowymi, robiąc to, ponownie łączysz swoje natywne zależności w react-native, powinien rozwiązać twój problem. Oczywiście nie zapomnij wyczyścić swojego projektu w Xcode.


5
Możesz użyć nowego narzędzia do aktualizacji opartego na Git, ponieważ automatycznie rozwiązuje ono konflikty. Uruchom polecenie „npm install -g React-native-git-upgrade”, a następnie „React-native-git-upgrade”.
— bits i

2
Postępowałem zgodnie z sugestiami, ale nie… Mam natywną wersję 0.41.2. Czy jest ktoś, kto mógłby to naprawić w wersji 0.41.2? dzięki.
— joemalski

2
to też nie działa dla mnie. używając xcode 8.2.1 i reaguj natywnym 0.41.2
— Terry Ray

1
Próbowałem tego i zniweczyło to kilka ważnych ustawień projektu. Tworzę rozszerzenie akcji i po uruchomieniu react-native upgradewszystkie moje ustawienia kompilacji zostały usunięte.
— Shane O Sullivan

1
dodałbym plik „delete the yarn.lock”, aby można było użyć „npm install”
— user1709076

247

xcode Product-> Scheme-> Manage Schemes kliknij '+' w miejscu docelowym, aby wybrać „React” i ustawić, czy React jest udostępniony.


10
Naciskam „+” i nie ma opcji „Reaguj” do wyboru. Pojawi się okno dialogowe z „Cel: MojaAplikacja” i Nazwa: MojaAplikacja. ”Nic nie mówi Reaguj ani nie udostępniono.
— Pete Alvin

Zdarzyło mi się to po zainstalowaniu kokopodów, które utworzyły plik xcworkspace. Mój istniejący xcodeproj nie miał opcji „React”, ale xcworkspace tak.
— AdamG

@PeteAlvin uruchomiłem polecenie „npm install -g reaguj-natywne-git-upgrade”, a następnie „Reaguj-native-git-upgrade”, a następnie pokazałem opcję reagowania
— Paul Fitzgerald

1
Po tym, jak zrobiłem tę kompilację powiodła się, ale po tym Run nie jest aktywny w Xcode
— Lucky_girl

Dzięki za tonę. Zastanawiam się, dlaczego nie jest to akceptowane rozwiązanie.
— Gaurav Grover,

19

Dla wszystkich, którzy używają React Native w wersji 0.40.0 lub nowszej, import nagłówków ma zasadniczą zmianę w stosunku do RN 0.40.0 i powoduje wiele błędów nie znalezionych plików .h. react-native-git-upgradenaprawiono problem podczas debugowania, ale kompilacja kończy się niepowodzeniem w wydaniu / archiwum.

Używam RN 0.42.3 z cocoapods i Xcode 8.2.1

Aby całkowicie to naprawić, przejdź do Xcode> Produkt> Schemat> Edytuj schemat>

  1. Odznacz opcję Parallelize Build wprowadź opis obrazu tutaj
  2. Kliknij przycisk + w Targets i dodaj React wprowadź opis obrazu tutaj
  3. Przeciągnij dodaną reakcję na górę Listy w Celach. wprowadź opis obrazu tutaj

Teraz wyczyść projekt i skompiluj


4
To nie rozwiązało problemu, zareaguj v.0.44.0
— Justus Eapen

17

Żadna z innych sugestii nie naprawiała mojego błędu, ale ta to zrobiła.

1 - Utwórz plik Podfile

Utwórz plik o nazwie ios/Podfilewewnątrz swojej natywnej aplikacji o następującej zawartości:

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

Uruchom polecenie pod installz folderu ios.

3 - Zresetuj XCode

Uruchom ponownie XCode, a błąd powinien zniknąć.


To do pewnego stopnia rozwiązuje problem. Ale dowiedziałem się, że nowe konfiguracje nie wydają się respektować kolejności kompilacji, więc nie przyjmują niestandardowych skryptów. Zasadniczo jest to problem z natywnym reagowaniem lub natywnym reagowaniem + xcode
— prog_24

9

Napotkałem ten problem po mojej pierwszej próbie uruchomienia kompilacji React w XCode i wszystko, co musiałem zrobić, to skompilować i uruchomić, aby błąd zniknął (po wybraniu zespołu i odpowiednim przygotowaniu). Czasami XCode wyświetla błędy, które tak naprawdę nie są błędami, dopóki nie skompiluje i nie połączy rzeczy za pierwszym razem.


Ja też. To dziwne, po prostu skompiluj i debuguj, błędy zniknęły. Nie wiem dlaczego.
— Zhang Buzz

@PaulFitzgerald - Licencja na co? Nie sądzę, żebym musiał cokolwiek licencjonować ...
— Dave Cole

8

Rozwiązaniem, które działa dla mnie, jest udostępnianie Reactschematu.

Jeśli nie masz schematu reagowania, utwórz nowy Selecting scheme menu -> Manage Scheme -> + -> choose React, a następnie zaznacz Schemat reakcji jako Udostępniony

wprowadź opis obrazu tutaj

wprowadź opis obrazu tutaj wprowadź opis obrazu tutaj

Ponadto, jeśli używasz Xcode 10, przejdź do File -> Project Settingsi wybierz Legacy build system

wprowadź opis obrazu tutaj


1
Dziękuję Ci! Czasami trudno jest rozwiązać tego rodzaju problemy bez znajomości programowania natywnego dla systemów iOS i Android oraz narzędzi, z których są używane.
— qasimalbaqali

1
@ onmyway133 Chciałbym móc jeszcze bardziej zagłosować na twoją odpowiedź! Dziękuję
— Mohammad Abbas

7

Rozwiązałem ten problem, wykonując następujące czynności:

  1. W xcode wybierz katalog główny projektu.
  2. Przeciągnij React.xcodeprojz Librariesdo katalogu głównego projektu.
  3. Kliknij nazwę projektu (w moim przypadku jest to nazwa SaleKit) wTARGETS
  4. Wybierać Build Phases
  5. W menu Target DependenciesdodajReact
  6. Przebuduj lub uruchom ponownie

wprowadź opis obrazu tutaj


1
To zadziałało dla mnie! Używam menedżera reagowania-natywnego-schematów, więc to był mój schemat przejściowy, który nie zostanie zbudowany, dopóki tego nie dodam. Wcześniej działał przez miesiące, a potem nagle przestał działać po świeżym klonie. Podejrzewam, że moje zakresy NPM w package.json są zbyt duże.

Pracował dla mnie bez konieczności przeciągania React.xcodeproj z folderu Biblioteki.
— ErmannoS

6

W moim przypadku w ReactNative "0.54.2" rozwiązałem go następującym rozwiązaniem

W Xcode select Product->Scheme->Manage Schemes, odznacz „YourProject” - tvOS ustaw go na Not Shared


1
U mnie działa, wersja reaktywna: 0.55.4. Dzięki
— Adarsh

1
Pracował dla mnie! Usunąłem już cel tvOS i zapomniałem usunąć go jako schemat! => RN 0,56
— BigPun86

4

Najlepsze rozwiązanie:

Otwórz „Ustawienia kompilacji” dla swojego projektu w Xcode i wyszukaj „Ścieżka wyszukiwania nagłówka”.

Kliknij dwukrotnie obok „Ścieżka wyszukiwania nagłówka”, gdzie inne właściwości mają „tak” lub „nie”

Teraz dodaj następujące elementy do „Ścieżki wyszukiwania nagłówka” (w Ustawieniach kompilacji):

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

Nie zapomnij, aby oba były rekurencyjne.


3

Uruchom npm installw katalogu projektu, aby zainstalować react-nativerozwiązanie tego błędu.


3

Możesz uruchomić .xcodeprojplik po zainstalowaniu poda.

Zamknij i otwórz .xcworkspaceplik. U mnie to zadziałało.


2

W reżimie bazowym projektu prowadzę:

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

Co zaowocowało:

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

Zauważyłem, że menedżer pakietów nie może działać, gdy uruchomiony jest inny proces pakietu.

Znalazłem proces działający z:

lsof -i :8081

Niż ja kill 9 ...proces.

Po tym jak zamknąłem Xcode, uruchom:

npm install

I ponownie uruchomiłem Xcode, od tego momentu wszystko działa zgodnie z oczekiwaniami !!


2

Miałem ten sam problem i naprawiłem go, umieszczając RNFIRMessaging.h nad React / RCTBundleURLProvider.h

A więc tak będzie wyglądać:

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

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

2

Spróbuj wykonać następujące czynności:

  1. Wyczyść ( cmd+ shift+ K).
  2. Build core React - wybierz React jako schemat w Xcode i zbuduj go ( cmd+ B).
  3. Zbuduj bibliotekę, która nie działa (np. RCTText).
  4. Zbuduj swoją aplikację.

1
Jak dokładnie budujesz bibliotekę?
— AlxVallejo

2

kliknij Produkt-> Schemat-> Zarządzaj schematami -> +. a następnie dodaj odpowiedź jako udostępnioną. upewnij się również, że znajduje się tam również nazwa Twojego projektu.


1

Napotkałem ten sam problem. Następnie usunąłem węzeł. Spróbuj użyć tych kroków

  1. Usuń folder node_modules - rm -rf node_modules && npm install
  2. Zresetuj pamięć podręczną pakietu - rm -fr $ TMPDIR / reag- * lub node_modules / reag-native / packager / packager.sh --reset-cache
  3. Clear Watchman Watchman - Watchman Watch-del-all

następnie zbuduj i zobacz


tak, wypróbowałem to również w wersji 0.41.2 React-native nadal nie działa ... jakieś dane wejściowe? dzięki.
— joemalski

1

Okazało się, że moim rozwiązaniem tego problemu po aktualizacji React była zmiana deklaracji #import "RCTBundleURLProvider.h"na#import <React/RCTBundleURLProvider.h>


1

U mnie wymiana

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

przez

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

w pliku AppDelegate.m działało.



0

Wypróbowałem wszystkie sugestie i żadna z nich nie zadziałała, gdy usunąłem repozytorium i sklonowałem je ponownie, a to działa dla mnie, więc moja sugestia polega na zatwierdzeniu zmian z powrotem i sklonowaniu repozytorium, które działało dla mnie.


0

Przejrzałem wszystkie wyżej wymienione odpowiedzi.

Oto rozwiązanie, które u mnie zadziałało:

KROK 1:

Biegać:

npm install react-native-fcm --save 

Powoduje to utworzenie katalogu w twoim projekcie pod node_modules> React-native-fcm

Dodaj react-native-fcm do swojego projektu

KROK 2:

Musisz dodać '$(SRCROOT)/../node_modules/react-native-fcm/ios'ścieżki wyszukiwania nagłówka w ustawieniach kompilacji.

Dodaj do ścieżek wyszukiwania nagłówków

Te 2 kroki zadziałały, aby usunąć błąd.

Aby uzyskać więcej informacji, możesz skorzystać z tych linków:

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

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


0

W moim przypadku nie mogłem usunąć node_modules i przeinstalować, a także nie mogłem tego zrobić react-native-git-updgradelub react-native upgradedlatego, że chciałem pozostać na RN-0.59, ponieważ .60 powoduje problemy dla moich zależności.

W każdym razie moja sytuacja była taka, że ​​brakowało mi pliku „React / RCTBundleURLProvider.h”. Miałem już Reacta dostępnego w moich schematach. Nie było go w katalogu moich bibliotek. Sprawdziłem mój target ustawienia kompilacji „s.

W zależnościach docelowych miałem tam również React.

Usunąłem zależność docelową „React”, a następnie ponownie dodałem. wyczyszczono foldery kompilacji, odbudowano projekt. zadziałało.


Nie jestem pewien, czy to ma znaczenie, ale jest literówka w: React-native-git-updgrade
— Josh

0

Używam React Native 0.61. Utworzyłem rozszerzenie udostępniania i otrzymywałem ten błąd. Musiałem wymienić:

#import "RCTBundleURLProvider.h"

z

#import "React/RCTBundleURLProvider.h"


-2

Upewnij się, że ścieżka do projektu nie zawiera spacji. Sama zmiana nazw folderów i usunięcie spacji rozwiązuje problem.

Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.