Ten błąd pojawia się podczas tworzenia natywnej aplikacji na iOS w Xcode.
Zaczęło się otrzymywać ten błąd po instalacji npm i połączeniu rpm -a biblioteki act-native-fs . Ale po wyszukaniu rozwiązania w Internecie zauważyłem, że wiele osób otrzymuje ten sam błąd podczas instalowania innych reagujących bibliotek natywnych.
Możliwe rozwiązanie sugerowane przez wielu jest, dodając po punkcie „Ustawienia Build” -> „Header wyszukiwania Paths”.
$(SRCROOT)/../node_modules/react-native/React
- (rekurencyjne)
Ale bez tego rozwiązania, wciąż pojawia się ten sam błąd
react-native-webrtc
Odpowiedzi:
W moim przypadku ten konkretny problem wystąpił, gdy próbowałem zarchiwizować aplikację natywną w wersji 0.40+ dla iOS (rozwiązanie znaleziono tutaj: Niezawodna kompilacja
^0.39.2
kończy się niepowodzeniem podczas aktualizacji do^0.40.0
).Zdarzyło się, że Xcode próbował równolegle zbudować natywne biblioteki reagujące i budował biblioteki z niejawnymi zależnościami reagowania, zanim faktycznie zbudował tę bibliotekę.
Rozwiązaniem w moim przypadku było:
Wyłącz kompilacje równoległe:
Dodaj reakcję jako zależność projektu
źródło
Upewnij się, że wyłączyłeś
Parallelise Build
i dodałeśReact
cel powyżej celuźródło
QUICK FIX (nie najlepszy)
Zmień linie nagłówka importu reaguj-natywne:
Do:
Oto przykład zmian, które musiałem wprowadzić w bibliotece, której próbowałem użyć: Zamyka # 46 - Nie znaleziono pliku „RCTBridgeModule.h” .
źródło
#import <React/RCT...h>
? zobowiąż tutaj#import "RCTBridgeModule.h"
naprawdę działał dla mnie dzisiaj lepiej.Zmiana
do
źródło
Dla widzów, którzy otrzymali ten błąd po aktualizacji React Native do wersji 0.40+, może być konieczne uruchomienie
react-native upgrade
z wiersza poleceń.źródło
Jeśli
Libraries/React.xcodeproj
są czerwone w xcode, zainstaluj ponownie node_modulesMój nowo utworzony projekt z React-native 0.46.3 był czerwony: SI miał npm 5.3.0 i przędzę 0.24.5, kiedy zrobiłem react-native init
źródło
Najnowsze wersje bibliotek responsywnych, jak wyjaśniono w poprzednich postach , mają przełomowe zmiany w kompatybilności. Jeśli nie planujesz aktualizacji do react-native 0.40+, możesz wymusić instalację poprzedniej wersji biblioteki, na przykład za pomocąreak-native-fs:
źródło
Udało mi się zbudować debug, ale nie mogłem zbudować archiwum.
Rozwiązałem ten problem, przeciągając
React.xcodeproj
znaleziony w / node_modules / react-native / React do mojego katalogu głównego w Xcode, a następnie dodałem React jako docelową zależność w fazach kompilacji> docelowe zależności.źródło
React.xcodeproj
w/node_modules/react-native/React
.react-native run-ios
, otrzymuję błędy kompilacji, które nie występują w Xcode. Całkowity brak odpowiedniej dokumentacji jest frustrujący.Po React Native 0.60 ten problem jest często spowodowany połączeniem biblioteki z nową funkcją automatycznego łączenia. To rozwiązuje problem
Odłącz starą bibliotekę za pomocą
Odśwież integrację podów w całości przy użyciu
Teraz przeładuj obszar roboczy i zrób czystą kompilację.
źródło
Ten błąd pojawił się po uruchomieniu
pod install
polecenia dla nowych zależności. Wraz z nimi został również zainstalowany React. Dlatego prawdopodobnie Xcode był mylony ze ścieżką. Usunąłem te linie z PodFile i błąd zniknął. Należy pamiętać, że te usunięte stąd zostały już połączone w Xcode.źródło
U mnie ten błąd wystąpił, gdy dodałem nowy schemat / cel ( app.staging ) w aplikacji i zainstalowałem pody przy użyciu instalacji pod.
Ten problem występuje, ponieważ pody nie są udostępniane dla wszystkich celów. Muszę więc dodać nowo dodany cel ( app.staging ) wewnątrz pliku Podfile .
Oto mój plik Podfile.
źródło
Otrzymuję ten błąd w każdym nowym module, który tworzę za pomocą create-react-native-module . Żadne z opublikowanych rozwiązań nie działało dla mnie.
To, co zadziałało, to najpierw upewnienie się, że uruchomię się
yarn
w nowo utworzonym folderze modułu w celu utworzenianode_modules/
(ten krok jest prawdopodobnie oczywisty). Następnie w XCode wybierz Produkt -> Schemat -> Reaguj zamiast domyślnego wyboru MyModuleName.źródło
pod install
. Nie wygląda na to, że create-aware-native-module robi to za Ciebie. Rozłączyłem się na chwilę. Ale to zadziałało, gdy utworzyłem prawidłowy plik podfile i uruchomiłem instalację.Przejdź do folderu iOS w swoim projekcie i zainstaluj pod -
Jeśli otrzymujesz błąd podczas instalacji polecenia typu pod-
Wynik powinien być - /Applications/Xcode.app/Contents/Developer
Jeśli ścieżka jest niepoprawna, otwórz projekt iOS w Xcode i przejdź do: Xcode-> preferencje-> narzędzia wiersza poleceń-> wybierz Xcode
I ponownie zainstaluj kapsułę, twój problem zostanie rozwiązany.
źródło
sugestia anhdevit w https://github.com/facebook/react-native/issues/24363#issuecomment-488547280 zadziałała dla mnie:
In your terminal, run: defaults delete com.apple.dt.Xcode
źródło
Jeśli chcesz zrobić to z edytora, otwórz również SMobile.xcscheme
I zmienić
parallelizeBuildables = "NO"
źródło
U mnie nie działało żadne z powyższych rozwiązań a poniżej to co zadziałało (już sprawdziłem
Parallelize Build
i dodałemReact
)źródło
Napotkałem ten problem podczas aktualizacji z 0.58.4 do nowej wersji reaktywnej 0.60.4. Nic z tego, co znalazłem w internecie, nie pomogło mi, ale udało mi się to uruchomić:
Przejdź do ustawień kompilacji, wyszukaj `` Ścieżki wyszukiwania nagłówków '', wybierz wpis, naciśnij przycisk USUŃ.
Miałem te wartości zastąpione i wygląda na to, że po usunięciu wróciły do wartości domyślnych. Również Cocoapods narzekał na to z wiadomościami w Terminalu po
pod install
:źródło
react-native link
Natknąłem się na ten problem po zrobieniu instrukcji zależności, która nie obsługuje automatycznego łączenia na RN 0.59+Rozwiązaniem było wybranie pliku xcodeproj w folderze Libraries w Xcode, a następnie w ustawieniach kompilacji zmień ścieżki wyszukiwania nagłówków, aby dodać te dwa (rekurencyjne):
źródło
Jeśli chcesz zachować włączoną Parallelise Build i uniknąć problemów z brakującymi nagłówkami, zapewnij krok przed kompilacją w swoim schemacie, aby umieścić nagłówki reakcji w obszarze danych pochodnych. Zauważ, że w tym przypadku ustawienia kompilacji pochodzą z projektu React. Tak, nie jest to rzecz piękna, ale wykonuje swoją pracę, a także pozwala zaoszczędzić dużo czasu na kompilacjach. Dane wyjściowe kroku przed kompilacją trafiają do pliku prebuild.log. Dokładne nagłówki, które musisz skopiować, będą zależeć od natywnych zależności twojego projektu, ale otrzymasz z tego plik jist.
Pobierz katalog danych pochodnych ze zmiennych środowiskowych i skopiuj wymagane nagłówki reakcji.
Skrypt jest wywoływany podczas czyszczenia kompilacji - co nie jest idealne. W moim przypadku jest jedna zmienna env, która zmienia się, pozwalając mi wyjść ze skryptu na wczesnym etapie czyszczenia.
źródło
Wystarczy zainstalować pod, jeśli plik pod istnieje, po prostu wpisz
jeśli nie: to najpierw
następnie,
w terminalu. i możesz iść.
źródło
Co możesz zrobić, aby zrobić to dobrze, to:
1)
npm uninstall reat-native-fs
aby odinstalować bibliotekę2)
npm unlink react-native-fs
aby odłączyć bibliotekęTeraz biblioteka została pomyślnie usunięta i ponownie zainstaluj bibliotekę w swoim projekcie i tym razem połącz wszystko ręcznie. Czasami automatyczne łączenie powoduje ten błąd.
źródło