Файл `React / RCTBridgeModule.h` не найден

Получение этой ошибки при создании приложения iOS для реагирования на xcode.

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

Эта ошибка появилась после установки npm и связывания с rpm библиотеки response-native-fs. Но после поиска решения в Интернете я заметил, что многие люди получают ту же ошибку при установке других собственных библиотек React.

Многие предлагают возможное решение: добавьте следующее в «Настройки сборки» -> «Пути поиска заголовков».

$(SRCROOT)/../node_modules/react-native/React - (Рекурсивный)

Но не повезло с этим решением, по-прежнему возникает та же ошибка


person Simar    schedule 15.01.2017    source источник
comment
Я получаю ту же ошибку с v0.41.2, она должна работать с ‹React / RCT ...› но это не так: /   -  person pgarciacamou    schedule 18.02.2017
comment
@camou см. мой ответ ниже; это может помочь   -  person lawrence    schedule 18.02.2017
comment
@CecilRodriguez Какая у вас версия для react-native-fs ?. Если вы добавляете вручную с помощью XCode, проверьте github.com/itinance / response-native-fs # добавление-вручную-в-xcode   -  person Shubham Khatri    schedule 27.04.2020
comment
Я получаю эту ошибку: невозможно разрешить модуль react-native-webrtc   -  person Ankita    schedule 16.06.2020


Ответы (21)


В моем случае эта конкретная проблема возникла, когда я пытался заархивировать приложение для iOS с поддержкой реакции 0.40+ (решение было найдено здесь: Надежная сборка на ^0.39.2 не выполняется при обновлении до ^0.40.0).

Случилось так, что Xcode пытался создать библиотеки, поддерживающие реакцию, параллельно и создавал библиотеки с неявными зависимостями реакции до фактического создания реакции библиотека.

В моем случае решение заключалось в следующем:

  1. Отключите параллельные сборки:

    • Xcode menu -> Product -> Scheme -> Manage Shemes...
    • Дважды щелкните свое приложение
    • Вкладка "Сборка" -> снимите флажок "Распараллелить сборку"
  2. Добавить реакцию как зависимость проекта

    • Xcode Project Navigator -> drag React.xcodeproj from Libraries to root tree
    • Вкладка Build Phases -> Target Dependencies -> + -> добавить React
person agiaLab    schedule 11.04.2017
comment
Я обнаружил, что это происходит только тогда, когда вы обновляетесь до react-native 0.40+ снизу. В проектах, инициированных с помощью RN 0.40+, параллельные сборки уже отключены. - person agiaLab; 18.04.2017
comment
Что означает перетаскивание к корневому дереву? И вкладка Build Phases ... это этапы сборки React.xcodeproj? - person GreenAsJade; 26.06.2017
comment
Когда эта ошибка появляется после создания новой цели, достаточно шага 1 :) - person Kepedizer; 23.04.2018
comment
При добавлении React в качестве целевой зависимости обязательно добавьте его НАД своим приложением, как описано в этом ответе: stackoverflow.com/a/52425997/ 4744177 - person Eugene Kim; 30.10.2018
comment
Как вы справляетесь с проектом, выброшенным на Expo? У меня нигде нет React.xcodeproj, React находится в зависимостях Podfile - person Sebastien Lorber; 13.12.2018
comment
@SebastienLorber откройте node_modules и перетащите оттуда проект React - person Ramon Canales; 18.12.2018
comment
Для expo скопируйте файл с PROJECT_ROOT/node_modules/react-native/React/React.xcodeproj @SebastienLorber - person Elijah Murray; 28.05.2019
comment
Почему я должен отключать параллельные сборки, чтобы решить эту проблему, я должен использовать эту функцию, чтобы сократить время сборки. любое другое решение? - person utkarsh-devops; 30.07.2019
comment
Это исправило это для меня, но вот пояснение: - person Fernando Rojo; 07.01.2020
comment
Кто-нибудь может прояснить, что означает перетаскивание React.xcodeproj из библиотек в корневое дерево. - person Ali; 11.05.2020
comment
В дереве есть подпапка Libraries, где находится React.xcodeproj - вам нужно переместить его в корень дерева, что можно сделать с помощью перетаскивания. - person agiaLab; 14.05.2020
comment
Нет, у него нет подпапки с библиотеками - person Ackman; 06.12.2020
comment
В React Native 0.64 больше нет файла React.xcodeproj - person Lopakhin; 29.03.2021
comment
@Lopakhin - тогда как решить эту проблему для react-native ›0.64? У меня возникла именно эта проблема, и я не могу найти решения. - person Abram; 18.06.2021

Убедитесь, что вы отключили Parallelise Build и добавили React цель выше вашей цели

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

person onmyway133    schedule 20.09.2018
comment
Я понял это самостоятельно после первого ответа, но движение вверх сработало! Пришлось понять, что это на самом деле означало для процесса строительства. - person njoye; 26.09.2018
comment
Выдергивал волосы и думал, что делаю не так после добавления цели React, но перемещение вверх дало трюк. @njoye, не могли бы вы объяснить, что это значит в процессе сборки? Спасибо! - person Eugene Kim; 30.10.2018
comment
@EugeneKim порядок элементов в списках - это способ Apple показать хронологический порядок (это все еще часто меня раздражает, как на OSX, так и на iOS). Таким образом, если поставить целевой React до того, как приложение построит код из React перед вашим собственным. Поскольку ваш собственный код использует цель React, похоже, это влияет на возможность ее создания. Вероятно, создаются файлы, которые затем используются в вашей цели. - person njoye; 12.11.2018
comment
Я хочу использовать функцию параллельной сборки, чтобы сократить время сборки - person utkarsh-devops; 30.07.2019

БЫСТРЫЙ ИСПРАВЛЕНИЕ (не самое лучшее)

Измените строки заголовка import response-native:

 #import <React/RCTBridgeModule.h>
 #import <React/RCTLog.h>

To:

 #import "RCTBridgeModule.h"
 #import "RCTLog.h"

Вот пример изменений, которые мне пришлось внести в библиотеку, которую я пытался использовать: Закрывает # 46 - файл 'RCTBridgeModule.h' не найден.

person Simar    schedule 15.01.2017
comment
Если вы внимательно прочитаете примечания к выпуску, я думаю, что на самом деле это наоборот - новый / одобренный способ #import <React/RCT...h>? здесь - person user; 25.01.2017
comment
Я знаю, что это кажется обратным тому, что рекомендуют документы, но указанный формат #import "RCTBridgeModule.h" действительно сработал для меня сегодня лучше. - person paws; 16.03.2017
comment
Ошибка для меня отмечена в файле RCTFileReaderModule.h. Я изменил инструкцию #import, как было предложено, но это не помогло. В связанном запросе на перенос репо я вижу, что изменение было сделано в RNFSManager.h и RNFSManager.m. Я пробовал сделать это в этих двух файлах, но это тоже не помогло. Есть идеи, что я делаю неправильно? - person Yossi; 27.04.2020

Изменять

  #import "RCTBridgeModule.h"

to

 #import "React/RCTBridgeModule.h"
person Mantas Laurinavičius    schedule 07.07.2018

Для тех, кто получил эту ошибку после обновления React Native до 0.40+, вам может потребоваться запустить react-native upgrade в командной строке.

person lawrence    schedule 18.02.2017

Если Libraries/React.xcodeproj красный в xcode, переустановите node_modules

rm -rf node_modules && yarn

Мой недавно созданный проект из react-native 0.46.3 был красным: S У меня npm 5.3.0 и yarn 0.24.5, когда я выполнял init-native init

person Codler    schedule 15.07.2017
comment
Спасибо, я выкладывал свой проект на github. И при повторном клонировании мне не хватало библиотек React, которые показывались красным. ваша команда работает. ???? - person Rifinio; 16.01.2018

Последние выпуски библиотек, поддерживающих реакцию, как описано в предыдущих сообщениях и здесь есть критические изменения совместимости. Если вы не планируете обновляться до response-native 0.40+, вы можете принудительно установить предыдущую версию библиотеки, например, с помощью response-native-fs:

npm install --save -E [email protected]
person Max Vorobjev    schedule 18.01.2017

Мне удалось создать отладку, но не удалось создать архив.

Я решил эту проблему, перетащив React.xcodeproj, найденный в / node_modules / response-native / React, в мой корневой каталог в Xcode, а затем добавил React в качестве целевой зависимости на этапах сборки> целевые зависимости.

person BuffMcBigHuge    schedule 27.06.2017
comment
В /node_modules/react-native/React нет React.xcodeproj. - person Andrew Koster; 21.04.2020
comment
@AndrewKoster У меня такая же проблема - person Steven Matthews; 21.04.2020
comment
@CecilRodriguez Мне удалось исправить это при компиляции в Xcode, добавив Cocoapods и добавив React в качестве модуля в Podfile. Однако, как только я пытаюсь использовать скомпилированную библиотеку в react-native run-ios, я получаю ошибки компиляции, которых не бывает в Xcode. Расстраивает полное отсутствие соответствующей документации. - person Andrew Koster; 21.04.2020
comment
@CecilRodriguez нашли решение? - person Yossi; 27.04.2020
comment
@AndrewKoster, так что внутри Xcode он работает? Если да, не могли бы вы более подробно объяснить, что вы сделали? - person Yossi; 27.04.2020
comment
@Yossi Нет, еще нет. Все попытки, которые я пробовал, не сработали. - person Steven Matthews; 27.04.2020
comment
@Yossi Нет, я пробовал твое. Не повезло. Я думаю, это как-то связано с моим родным модулем. - person Steven Matthews; 27.04.2020

Для меня эта ошибка возникла, когда я добавил новую схему / цель (app.staging) в приложение и установил модули с помощью установки модуля.

Эта проблема возникает из-за того, что модули не используются для всех целей. Поэтому мне нужно добавить недавно добавленную цель (app.staging) в Podfile.

Вот мой подфайл.

platform :ios, '9.0'
require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'

target 'app' do
  # Pods for app
  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"

  target 'appTests' do
    inherit! :search_paths
    # Pods for testing
  end

  # Pods for staging app // important line below
  target 'app.staging'

  use_native_modules!
end
person maulikdhameliya    schedule 23.11.2019
comment
Помог мне! Мне также нужно было очистить проект после установки модуля - person chenop; 25.12.2020

После React Native 0.60 эта проблема часто вызывается связанной библиотекой, смешанной с новой функцией «автоматического связывания». Это исправляет это для меня

Отключить старую библиотеку с помощью

$ react-native unlink react-native-fs

Интеграция Refresh Pods полностью с использованием

$ pod deintegrate && pod install

Теперь перезагрузите рабочее пространство и выполните чистую сборку.

person Peter Theill    schedule 22.01.2020

Эта ошибка появилась у меня после того, как я выполнил команду pod install для новых зависимостей. Наряду с этим также был установлен React. Поэтому, вероятно, Xcode был перепутан с path. Я удалил эти строки из PodFile, и ошибка исчезла. Обратите внимание, что удаленные отсюда уже связаны в Xcode.

target 'app' do

  pod 'GoogleMaps'
  pod 'Firebase/Auth', '~> 6.3.0'
  pod 'Firebase/Database', '~> 6.3.0'

  # Removed four pods below and it worked.

  pod 'react-native-image-picker', :path => '../node_modules/react-native-image-picker'

  pod 'ReactNativePermissions', :path => '../node_modules/react-native-permissions'

  pod 'react-native-image-resizer', :path => '../node_modules/react-native-image-resizer'

  pod 'RNFS', :path => '../node_modules/react-native-fs'

  end
person NightFury    schedule 10.07.2019


Перейдите в папку iOS в вашем проекте и установите pod -

$ pod install

Если вы получаете какую-либо ошибку при установке команды pod type -

$ xcode-select -p

Результат должен быть - /Applications/Xcode.app/Contents/Developer

Если путь неверен, откройте свой проект iOS в Xcode и перейдите к: Xcode-> настройки-> инструменты командной строки-> выберите Xcode

И снова установите модуль, и ваша проблема будет исправлена.

person Ujjwal Singh    schedule 17.08.2019

Предложение anhdevit в https://github.com/facebook/react-native/issues/24363#issuecomment-488547280 работал у меня:

In your terminal, run: defaults delete com.apple.dt.Xcode

person Yossi    schedule 27.04.2020

Если вы хотите сделать это из своего редактора, также откройте SMobile.xcscheme.

И измените parallelizeBuildables = "NO"

person Hadnazzar    schedule 26.03.2019

Для меня не сработало ни одно из вышеперечисленных решений, а ниже - то, что сработало (я уже проверил Parallelize Build и добавил React)

1. Open XCode --> To Libraries add `$LibraryWhichDoesNotWork.xcodeproj$`
2. Then for your app in the `Build Phases` add to the `Link Binary with Libraries` the file `lib$LibraryWhichDoesNotWork$.a`
person kodeusz    schedule 16.05.2019

Я столкнулся с этой проблемой при обновлении с 0.58.4 до новой версии 0.60.4. Ничего из того, что я нашел в Интернете, мне не помогло, но мне удалось заставить его работать:

Перейдите к настройкам сборки, найдите "Пути поиска заголовков", выберите запись и нажмите кнопку УДАЛИТЬ.

У меня эти значения были переопределены, и похоже, что после удаления они вернулись к значениям по умолчанию. Также Cocoapods жаловался на это сообщениями в Терминале после pod install:

[!] The `app [Release]` target overrides the `HEADER_SEARCH_PATHS` build setting defined in `Pods/Target Support Files/Pods-app/Pods-app.release.xcconfig'. This can lead to problems with the CocoaPods installation
person Hleb Barylskyi    schedule 26.07.2019

Я столкнулся с этой проблемой после того, как выполнил руководство react-native link зависимости, которая не поддерживала автоматическую ссылку на RN 0.59+.

Решение заключалось в том, чтобы выбрать файл xcodeproj в папке Libraries в Xcode, а затем в настройках сборки изменить пути поиска заголовков, чтобы добавить эти два (рекурсивные):

$(SRCROOT)/../../../ios/Pods/Headers/Public/React-Core
$(SRCROOT)/../../../ios/Pods/Headers/Public
person qwertzguy    schedule 23.02.2020

Если вы хотите, чтобы Parallelise Build оставался включенным и избегал проблем с отсутствующими заголовками, укажите в своей схеме этап предварительной сборки, чтобы поместить заголовки реакции в область производных данных. Обратите внимание, что в этом случае настройки сборки берутся из проекта React. Да, в этом нет ничего прекрасного, но он выполняет свою работу, а также экономит много времени на сборках. Выходные данные шага предварительной сборки попадают в файл prebuild.log. Точные заголовки, которые вам нужно скопировать, будут зависеть от зависимостей вашего проекта, связанных с реакцией, но вы получите от этого jist.

Изменить схему =› Сборка

Получите каталог производных данных из переменных среды и скопируйте необходимые заголовки реакции.

#build_prestep.sh (chmod a+x)
derived_root=$(echo $SHARED_DERIVED_FILE_DIR|sed 's/DerivedSources//1')
react_base_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Base/#1')
react_view_headers=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Views/#1')
react_modules_head=$(echo $PROJECT_FILE_PATH|sed 's#React.xcodeproj#Modules/#1')
react_netw_headers=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Network/#1')
react_image_header=$(echo $PROJECT_FILE_PATH|sed 's#React/React.xcodeproj#Libraries/Image/#1')

echo derived root = ${derived_root}
echo react headers = ${react_base_headers}

mkdir -p ${derived_root}include/React/

find  "${react_base_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_view_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_modules_head}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_netw_headers}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;
find  "${react_image_header}" -type f -iname "*.h" -exec cp {} "${derived_root}include/React/" \;

Сценарий действительно вызывается во время очистки сборки, что не идеально. В моем случае есть одна переменная env, которая изменяется, что позволяет мне выйти из скрипта раньше во время очистки.

if [ "$RUN_CLANG_STATIC_ANALYZER" != "NO" ] ; then
    exit 0 
fi
person Hermano Mclintock    schedule 17.03.2020

Мое решение заключалось в том, чтобы удалить все в Libraries, как описано здесь

person redexp    schedule 15.04.2021

Что вы можете сделать, чтобы сделать это правильно:

1) npm uninstall reat-native-fs для удаления библиотеки

2) npm unlink react-native-fs, чтобы отключить библиотеку

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

person Codesingh    schedule 15.01.2017