Файл "RCTBundleURLProvider.h" не знайдено - AppDelegate.m


124

Я намагаюся запустити свою програму React Native в XCode, і я продовжую отримувати цю помилку. Я не можу зрозуміти, як вирішити проблему. Будь-які пропозиції?

Знімок екрана помилки в XCode:

скріншот


Я б запропонував, перш ніж застосовувати будь-які зміни, просто очистіть ваш проект і спробуйте запустити його, тому що те ж саме відбувається і в моєму випадку. Я просто прибираю свій проект і запускаю його, і він працює.
bittu

Ви обов'язково повинні змінити правильну відповідь! Відповідь @mark правильна, і всі приходять за цим.
Serdar

Відповіді:


64

Видаліть модулі вузлів, потім запустіть npm install(або ще краще пряжу), і після того, як все закінчиться завантаженням, запустіть, react-native upgradeякий повинен дати вам можливість замінити старі файли на шаблонні, тим самим, ви з’єднаєте свої рідні залежності в реакційному корінці, який має вирішити вашу проблему. Звичайно, не забудьте почистити проект у Xcode.


5
Ви можете використовувати новий інструмент оновлення на основі Git, оскільки він автоматично вирішує конфлікти. Запустіть "npm install -g react-native-git-upgrade" з подальшим "реагуванням-native-git-upgrade".
bitsand

2
Я дотримувався пропозицій, але nogo .. у мене є початкова версія 0.41.2 чи є хто-небудь, хто може виправити це на версії 0.41.2? Дякую.
joemalski

2
це також для мене не вийшло. використовуючи xcode 8.2.1 та реагуючи на нативні 0.41.2
Terry Ray

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

1
я додав би файл "видалити yarn.lock", щоб ви могли використовувати "npm install"
user1709076

247

xcode Product-> Scheme-> Управління схемами натисніть "+" на Цільовій панелі, щоб вибрати "React" і встановити, що React є спільним.


10
Я натискаю "+", і немає "Реагувати" для вибору. З'явиться діалогове вікно "Ціль: MyApp" та ім'я: MyApp. "Нічого не говорить" Реагуйте та не поділившись "
Піт Елвін

Це сталося зі мною після встановлення кокоподів, які створили файл xcworkspace. У мого існуючого xcodeproj не було "Реагувати" як опції, але xcworkspace зробив.
AdamG

@PeteAlvin я запустив Run "npm install -g react-native-git-upgrade", а потім "react-native-git-upgrade", а потім він показав для мене варіант реакції
Пол Фіцджеральд

1
Після того, як я зробив це, збірка успішна, але після цього Run не активний у Xcode
Lucky_girl

Дякую тонну. Цікаво, чому це не прийняте рішення.
Гаурав Гровер

19

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

Я використовую RN 0,42,3 з какаодами та Xcode 8.2.1

Щоб повністю виправити це, перейдіть до Xcode> Product> Scheme> Edit Scheme>

  1. Untick Parallelize Build введіть тут опис зображення
  2. Натисніть кнопку + в цілях і додайте Реагувати введіть тут опис зображення
  3. Перетягніть додану React до початку списку в цілях. введіть тут опис зображення

Тепер очистіть проект і побудуйте


4
Це не вирішило для мене, реагуйте v.0.44.0
Justus Eapen

17

Жодна з інших пропозицій не виправляла мою помилку, але ця зробила це.

1 - Створити Podfile

Створіть файл, названий 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 і помилки не повинно бути.


Це певною мірою вирішує питання. Але я дізнався, що нові конфігурації, схоже, не поважають порядок збирання, тому вони не беруть користувальницьких сценаріїв. По суті, це проблема з натиском реакції або натиском + xcode
prog_24

9

Я зіткнувся з цією проблемою після моєї першої спроби запустити збірку React в XCode, і все, що я повинен був зробити, це насправді створити та запустити, щоб помилка пішла (після вибору команди та належного забезпечення). Іноді XCode показує помилки, які насправді не є помилками, поки він не компілює і не посилає речі вперше.


Я також. Дивно, просто складіть і налагоджуйте, помилки зникли. Я не знаю чому.
Чжан Базз

@PaulFitzgerald - Ліцензія на що? Я не вірю, що мені потрібно було щось ліцензувати ...
Дейв Коул

8

Рішення, яке працює для мене, - це поділитися Reactсхемою.

Якщо у вас немає схеми реагування, створіть нову схему Selecting scheme menu -> Manage Scheme -> + -> choose React, а потім позначте схему реагування як спільну

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

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

Крім того, якщо ви використовуєте 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
Це працювало для мене! Я використовую react-native-схем-менеджер, і тому моя схема постановки не будується, поки я не додаю це. Це працювало раніше місяцями, потім раптом не з’явилося після свіжого клону. Підозрюють, що мої діапазони 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

Запустіть npm installу своєму каталозі проектів, щоб встановити react-nativeвирішення цієї помилки.


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. Build core 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 / packger / packger.sh - reset-cache
  3. Чіткі годинникові годинники - сторожові годинник-дель-все

потім складіть і побачите


Так, я також спробував це в реальній версії 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> react-native-fcm

Додайте у свій проект react-native-fcm

КРОК 2:

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

Додати до пошукових шляхів до заголовка

Ці 2 кроки працювали для мене, щоб усунути помилку.

Для отримання більш детальної інформації ви можете перейти за цими посиланнями:

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

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


0

У моєму випадку я не міг видалити node_modules та перевстановити, і я також не міг цього зробити, react-native-git-updgradeабо react-native upgradeтому, що я хотів залишитися на RN-0.59, тому що .60 викликає проблеми в моїх залежностях.

У будь-якому випадку моя ситуація полягала в тому, що я пропустив файл "React / RCTBundleURLProvider.h". У мене вже був доступний React у моїх схемах. Це не було в моєму каталозі бібліотек. Я перевірив налаштування збірки своєї цілі .

Всередині цільових залежностей я також там реагував.

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


Не впевнений, що це має значення, але є помилка в друку: react-native-git-updgrade
Josh

0

Я використовую React Native 0.61. Я створив розширення Share і отримував цю помилку. Мені потрібно було замінити:

#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


1
Це не відповідь на це запитання
S.Hossein Asadollahi

-2

Переконайтеся, що на шляху до вашого проекту немає пробілів. Просто перейменування папок та видалення пробілів вирішує проблему для мене.

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.