Файл "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.