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

124

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

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

Скриншот

FilosoferKing
источник
Я бы посоветовал, прежде чем вносить какие-либо изменения, просто очистить свой проект и попробовать запустить его, потому что в моем случае происходит то же самое. Я просто очищаю свой проект, запускаю его, и он работает.
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. введите описание изображения здесь

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

Hariks
источник
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, и ошибка должна исчезнуть.

Erich
источник
Это в некоторой степени решает проблему. Но я обнаружил, что новые конфигурации, похоже, не соблюдают порядок сборки, поэтому они не используют пользовательские скрипты. По сути, это проблема с 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.

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

onmyway133
источник
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 установите для него значение "Не общий"

JXLai
источник
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

Запустите npm installв каталоге своего проекта, чтобы react-nativeустранить эту ошибку.

Пол Бриттен
источник
3

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

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

Saranjith
источник
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. Создайте свое приложение.
jyson
источник
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>

ays0110
источник
1

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

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

по

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

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

Панкти Шах
источник
0

Если вы еще не запускали, npm installвы, вероятно, столкнетесь с этой проблемой.

Харкират Салуджа
источник
0

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

ragar90
источник
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"
Эрик Винер
источник
-1

вам нужно установить собственный ответ, в терминале

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

затем

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

источник:
https://facebook.github.io/react-native/docs/getting-started.html

Olzh
источник
1
Это не ответ на этот вопрос,
С.Хоссейн Асадоллахи
-2

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

user5807443
источник