Файл «RCTBundleURLProvider.h» не найден - AppDelegate.m


124

Я пытаюсь запустить свое приложение React Native в XCode и продолжаю получать эту ошибку. Не могу понять, как решить проблему. Какие-либо предложения?

Снимок экрана с ошибкой в ​​XCode:

Скриншот


Я бы посоветовал, прежде чем вносить какие-либо изменения, просто очистить свой проект и попробовать запустить его, потому что в моем случае происходит то же самое. Я просто очищаю свой проект, запускаю его, и он работает.
— bittu

Вы обязательно должны изменить правильный ответ! Ответ @mark правильный, и все приходят за ним.
— Serdar

Ответы:


64

Удалите модули узлов, затем запустите npm install(или еще лучше пряжу) и после того, как все будет загружено, запустите, react-native upgradeкоторый должен дать вам возможность заменить старые файлы шаблонными, тем самым вы повторно свяжете свои собственные зависимости в response-native, который должен решить вашу проблему. Конечно, не забудьте очистить свой проект в Xcode.


5
Вы можете использовать новый инструмент обновления на основе Git, поскольку он автоматически разрешает конфликты. Запустите «npm install -g response-native-git-upgrade», а затем «react-native-git-upgrade».
— Bitsand

2
Я следил за предложениями, но их нет .. У меня есть собственная версия 0.41.2, есть ли кто-нибудь, кто может исправить это в версии 0.41.2? Спасибо.
— joemalski

2
это тоже не сработало для меня. используя xcode 8.2.1 и реагируйте на родной 0.41.2
— Терри Рэй

1
Я попробовал это, и это снесло некоторые важные настройки проекта. Я создаю расширение действия, и после запуска react-native upgradeвсе мои настройки сборки были удалены.
— Шейн О Салливан

1
я бы добавил файл «удалить yarn.lock», чтобы вы могли использовать «npm install»
— user1709076

247

xcode Product-> Scheme-> Manage Schemes нажмите «+» в Target, чтобы выбрать «React» и установите React is shared.


10
Я нажимаю «+», а «Реагировать» нет. Появляется диалоговое окно с «Target: MyApp» и «Name: MyApp». Ничего не говорится о React и не делится.
— Pete Alvin

Это случилось со мной после установки cocopods, которые создали файл xcworkspace. В моем существующем xcodeproj не было опции «React», а в xcworkspace была.
— AdamG

@PeteAlvin Я запустил Run «npm install -g response-native-git-upgrade, а затем« response-native-git-upgrade », а затем он показал мне вариант реакции
— Пол Фицджеральд

1
После того, как я сделал эту
— сборку успешно

Благодаря тонну. Интересно, почему это не принято?
— Gaurav Grover

19

Для всех, кто использует React Native 0.40.0 или выше, импорт заголовков существенно отличается от RN 0.40.0 и приводит к большому количеству ошибок не найденных файлов .h. react-native-git-upgradeисправлена ​​проблема для меня во время отладки, но сборка не выполняется в выпуске / архиве.

Я использую RN 0.42.3 с cocoapods и Xcode 8.2.1

Чтобы полностью исправить это, перейдите в Xcode> Продукт> Схема> Изменить схему>

  1. Снимите флажок " Параллельная сборка" введите описание изображения здесь
  2. Нажмите кнопку + в Targets и добавьте React введите описание изображения здесь
  3. Перетащите добавленный React в начало списка в Targets. введите описание изображения здесь

Теперь очистите проект и соберите


4
Это не помогло мне, React v.0.44.0
— Justus Eapen

17

Ни одно из других предложений не исправляло мою ошибку, но это помогло.

1 - Создать подфайл

Создайте файл с именем ios/Podfileвнутри вашего приложения для реакции со следующим содержимым:

# 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 - Установить Podfile

Запустите команду pod installиз папки ios.

3 - Сбросить XCode

Перезапустите XCode, и ошибка должна исчезнуть.


Это в некоторой степени решает проблему. Но я обнаружил, что новые конфигурации, похоже, не соблюдают порядок сборки, поэтому они не используют пользовательские скрипты. По сути, это проблема с response-native или response-native + xcode
— prog_24 02

9

Я столкнулся с этой проблемой после первой попытки запустить сборку React в XCode, и все, что мне нужно было сделать, это собрать и запустить, чтобы ошибка исчезла (после выбора команды и надлежащей подготовки). Иногда XCode показывает ошибки, которые на самом деле не являются ошибками, пока он не компилирует и не связывает вещи в первый раз.


Я тоже. Странно, просто сборка и отладка, ошибки исчезли. Не знаю почему.
— Zhang Buzz

@PaulFitzgerald - Лицензия на что? Я не верю, что мне нужно было что-то лицензировать ...
— Дэйв Коул

8

Решение, которое мне подходит, - поделиться Reactсхемой.

Если у вас нет схемы React, создайте новую Selecting scheme menu -> Manage Scheme -> + -> choose React, затем отметьте схему React как Shared

введите описание изображения здесь

введите описание изображения здесь введите описание изображения здесь

Кроме того, если вы используете Xcode 10, перейдите File -> Project Settingsи выберите Legacy build system.

введите описание изображения здесь


1
Спасибо! Иногда трудно решить такие проблемы, не зная, как мне кажется, нативной разработки для iOS и Android и инструментов, которые используются.
— qasimalbaqali

1
@ onmyway133 Я хотел бы больше проголосовать за ваш ответ! Спасибо
— Мохаммад Аббас

7

Я решил эту проблему, выполнив следующие шаги:

  1. В xcode выберите корень проекта.
  2. Перетащите React.xcodeprojиз Librariesв корень проекта.
  3. Нажмите на название проекта (в моем случае это название SaleKit) вTARGETS
  4. выберите Build Phases
  5. В раскрывающемся списке Target DependenciesдобавитьReact
  6. Восстановить или перезапустить

введите описание изображения здесь


1
Это сработало для меня! Я использую response-native-scheme-manager, поэтому моя схема Staging не создавалась, пока я не добавил это. Раньше это работало месяцами, а затем внезапно перестало работать после создания нового клона. Подозреваю, что мой диапазон NPM в package.json слишком велик.

Сработало для меня, без необходимости перетаскивать React.xcodeproj из папки библиотек.
— ErmannoS

6

Для моего случая в ReactNative "0.54.2" я решил это следующим решением

В Xcode выберите Product->Scheme->Manage Schemes, снимите галочку 'YourProject' - tvOS установите для него значение "Не общий"


1
Это работает для меня, версия для реагирования: 0.55.4. Спасибо
— Адарш

1
Сработало у меня! Я удалил цель tvOS раньше и забыл удалить ее как схему! => RN 0.56
— BigPun86

4

Лучшее решение :

Откройте «Параметры сборки» для вашего проекта в Xcode, выполните поиск «Путь поиска заголовка».

Дважды щелкните рядом с «Путь поиска заголовка», где у других свойств есть «да» или «нет».

Теперь добавьте следующее в «Путь поиска заголовка» (в разделе «Параметры сборки»):

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

Не забывайте Сделайте их оба рекурсивными.



3

Возможно, вы запускаете .xcodeprojфайл после установки модуля.

Закройте и откройте .xcworkspaceфайл. У меня это сработало.


2

В базовом каталоге проекта, который я запускаю:

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

В результате:

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

Я обнаружил, что менеджер пакетов не может работать, когда запущен другой процесс упаковщика.

Я обнаружил, что процесс работает с:

lsof -i :8081

Чем я занимаюсь kill 9 ....

После того, как я закрыл Xcode, запустите:

npm install

И снова запустил Xcode, с этого момента все работает как положено !!


2

У меня была такая же проблема, и я исправил ее, разместив RNFIRMessaging.h над React / RCTBundleURLProvider.h

Вот так я буду выглядеть:

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

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

2

Попробуйте следующее:

  1. Чистый ( cmd+ shift+ K).
  2. Сборка ядра React - выберите React в качестве схемы в Xcode и создайте ее ( cmd+ B).
  3. Создайте библиотеку, которая дает сбой (например, RCTText).
  4. Создайте свое приложение.

1
Как именно построить библиотеку?
— AlxVallejo

2

нажмите Продукт-> Схема-> Управление схемами -> +. а затем добавьте реакцию как общий. также убедитесь, что название вашего проекта тоже присутствует.


1

Я столкнулся с той же проблемой. Затем я удалил узел. Попробуйте использовать эти шаги

  1. Удалите папку node_modules - rm -rf node_modules && npm install
  2. Сбросить кеш упаковщика - rm -fr $ TMPDIR / react- * или node_modules / react-native / packager / packager.sh --reset-cache
  3. Часы Clear watchman - watchman watch-del-all

затем сделай сборку и посмотри


да, я также пробовал это на реактивной версии 0.41.2, которая все еще не работает ... какие-либо входы? Спасибо.
— joemalski

1

Я обнаружил, что после обновления React я исправил эту проблему, изменив объявление #import "RCTBundleURLProvider.h"на#import <React/RCTBundleURLProvider.h>


1

Для меня замена

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

по

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

в файле AppDelegate.m работал.



0

Я попробовал все предложения, и ни одно из них не сработало, я удалил репо и снова клонировал его, и это сработало для меня, поэтому мое предложение - зафиксировать ваши изменения, скопировать их и снова клонировать репо, которое сработало для меня.


0

Я прошел все ответы, упомянутые выше.

Вот решение сработало для меня:

ШАГ 1:

Бегать:

npm install react-native-fcm --save 

Это приведет к созданию каталога в вашем проекте в node_modules> response-native-fcm

Добавьте в проект react-native-fcm

ШАГ 2:

Вам нужно добавить '$(SRCROOT)/../node_modules/react-native-fcm/ios'в заголовок пути поиска в настройках сборки.

Добавить в пути поиска заголовка

Эти 2 шага помогли мне удалить ошибку.

Для получения более подробной информации вы можете перейти по этим ссылкам:

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

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


0

В моем случае я не мог удалить node_modules и переустановить, и я тоже не смог этого сделать, react-native-git-updgradeили react-native upgradeпотому что хотел остаться на RN-0.59, потому что .60 вызывает проблемы для моих зависимостей.

В любом случае моя ситуация заключалась в том, что мне не хватало файла React / RCTBundleURLProvider.h. В моих схемах уже был React. Его не было в каталоге моих библиотек. Я проверил настройки сборки моей цели .

Внутри целевых зависимостей у меня также был React.

Я удалил целевую зависимость React, а затем снова добавил. почищены папки сборки, пересобран проект. это сработало.


Не уверен, что это важно, но есть опечатка в: response-native-git-updgrade
— Джош

0

Я использую React Native 0.61. Я создал расширение общего доступа и получал эту ошибку. Мне нужно было заменить:

#import "RCTBundleURLProvider.h"

с участием

#import "React/RCTBundleURLProvider.h"


-2

Убедитесь, что в пути к вашему проекту нет пробелов. Просто переименование папок и удаление пробелов решает для меня проблему.

Используя наш сайт, вы подтверждаете, что прочитали и поняли нашу Политику в отношении файлов cookie и Политику конфиденциальности.
Licensed under cc by-sa 3.0 with attribution required.