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

FilosoferKing
źródło
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.

Armands Malejevs
źródło
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.

znak
źródło
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

Hariks
źródło
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ąć.

Erich
źródło
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.

Dave Cole
źródło
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

onmyway133
źródło
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

Krzepki
źródło
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

JXLai
źródło
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.

Mega obszar
źródło
3

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

Paul Brittain
źródło
3

Możesz uruchomić .xcodeprojplik po zainstalowaniu poda.

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

Saranjith
źródł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 !!

Oded Regev
źródło
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>
Jefferson Filho
źródło
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ę.
jyson
źródło
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.

Eran Or
źródło
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

Sport
źródło
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>

ays0110
źródło
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.

Pankti Shah
źródło
0

Jeśli nie uruchomiłeś npm install, prawdopodobnie napotkasz ten problem.

Harkirat Saluja
źródł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.

ragar90
źródło
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

Harjot Singh
źródło
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.

Jim
źródł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"
Eric Wiener
źródło
-1

musisz zainstalować React Native, w trybie terminala

/usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"

następnie

brew install node
brew install watchman
npm install -g react-native-cli

źródło:
https://facebook.github.io/react-native/docs/getting-started.html

Olzh
źródło
1
To nie jest odpowiedź na to pytanie
S.Hossein Asadollahi
-2

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

user5807443
źródło