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:
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:
Odpowiedzi:
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 upgrade
co 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.
react-native upgrade
wszystkie moje ustawienia kompilacji zostały usunięte.
xcode Product-> Scheme-> Manage Schemes kliknij '+' w miejscu docelowym, aby wybrać „React” i ustawić, czy React jest udostępniony.
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-upgrade
naprawiono 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>
Teraz wyczyść projekt i skompiluj
Żadna z innych sugestii nie naprawiała mojego błędu, ale ta to zrobiła.
Utwórz plik o nazwie ios/Podfile
wewną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
Uruchom polecenie pod install
z folderu ios.
Uruchom ponownie XCode, a błąd powinien zniknąć.
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.
Rozwiązaniem, które działa dla mnie, jest udostępnianie React
schematu.
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
Ponadto, jeśli używasz Xcode 10, przejdź do File -> Project Settings
i wybierz Legacy build system
Rozwiązałem ten problem, wykonując następujące czynności:
React.xcodeproj
z Libraries
do katalogu głównego projektu.SaleKit
) wTARGETS
Build Phases
Target Dependencies
dodajReact
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
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.
Uruchom npm install
w katalogu projektu, aby zainstalować react-native
rozwiązanie tego błędu.
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 !!
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>
Spróbuj wykonać następujące czynności:
Napotkałem ten sam problem. Następnie usunąłem węzeł. Spróbuj użyć tych kroków
następnie zbuduj i zobacz
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.
Jeśli nie uruchomiłeś npm install
, prawdopodobnie napotkasz ten problem.
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
KROK 2:
Musisz dodać '$(SRCROOT)/../node_modules/react-native-fcm/ios'
ścieżki wyszukiwania nagłówka w ustawieniach kompilacji.
Te 2 kroki zadziałały, aby usunąć błąd.
Aby uzyskać więcej informacji, możesz skorzystać z tych linków:
W moim przypadku nie mogłem usunąć node_modules i przeinstalować, a także nie mogłem tego zrobić react-native-git-updgrade
lub react-native upgrade
dlatego, ż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.
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"
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
Upewnij się, że ścieżka do projektu nie zawiera spacji. Sama zmiana nazw folderów i usunięcie spacji rozwiązuje problem.