Подтвердить что ты не робот

React Native/Xcode Upgrade и теперь RCTConvert.h не найден

App работает нормально на React Native 0.35.0. После обновления до 0.40.0 через react-native-git-upgrade я получаю несколько проблем с лексикой/препроцессором при попытке создания/запуска приложения в XCode.

React/RCTBridgeModule.h' file not found

При нажатии на проблему я вижу, что это выделено:

#import <React/RCTBridgeModule.h>

Он не является проблемой пути поиска.

Я попытался удалить node_modules и запустить npm install снова, но это ничего не зафиксировало.

4b9b3361

Ответ 1

Как отмечалось выше, в iOS наблюдается разрывное изменение в RN 0,40. Короче говоря, объявления заголовков RN обновляются, чтобы указать путь include $(BUILT_PRODUCTS_DIR)/include/React.

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

  • В Xcode перейдите к схеме проекта (Product → Scheme → Manage Scheme → дважды щелкните по вашему проекту).
  • Нажмите кнопку "Создать" на левой панели.
  • Снимите флажок "Параллелизировать сборку" в разделе Параметры сборки.
  • Затем в разделе Цели нажмите кнопку " +", затем найдите "Реагировать". Выберите его и нажмите " Добавить".
  • "Реакция" теперь должна появляться в разделе Цели. Нажмите и перетащите его вверх, чтобы он был первым элементом в списке (перед вашим проектом).
  • Очистите проект и выполните его.

Примечание. У вас может быть проблема с подобным заголовком с другими библиотеками (например, response-native-fbsdk), которые относятся к тем, которые реагируют на собственные файлы .h.

Ответ 2


В реакционной нативной 0,40


вам нужно заменить #import "RCTBridgeModule.h" на #import <React/RCTBridgeModule.h>

затем очистить и построить снова.

Ответ 3

На 0.40 есть разрывное изменение, вы можете увидеть подробности здесь.

Цитирование непосредственно из примечаний к выпуску:

Это означает, что все родные библиотеки iOS нуждаются в главном выпуске версии для RN ​​0,40. Мы пытаемся свести к минимуму изменения этой величины, и мы извиниться за любые неудобства.

Итак, все родные библиотеки iOS будут нуждаться в обновлении, прежде чем получить совместимость с реакционной версией версии 0.40.

Ответ 4

Если вы используете pod, возможно, вы можете попробовать это решение:

Перейдите к разделу "Пути поиска в заголовке": " Pods → TARGETS → (YOUR TARGET, like my target is RNGL) → Build Settings → All → Search Paths → Header Search Paths

добавить путь: "${PODS_ROOT}/Headers/Public/React" нерекурсивный

Ответ 5

Если ваше приложение не велико, просто

1) rename original app
2) create the same app again react-native init <orig_app_name>
3) copy over all necessary files from your original app to the newly created one
4) adjust the package.json
5) npm install
6) react-native run-<ios|android>

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

надеюсь, что это поможет кому-то

Ответ 6

Эти шаги помогли решить мою проблему. Я попытался "Снять флажок распараллелить сборку". Это не сработало для меня.

  1. Откройте свой проект в XCode.
  2. Откройте папку "Библиотеки". Вы должны увидеть React.xcodeproj и несколько RCT *.xcodeproj.
  3. Перетащите React.xcodeproj в каждый из других проектов.
  4. Нажмите на каждый проект и перейдите на вкладку Build Phases.
  5. Нажмите на целевые зависимости и добавьте React в качестве целевой зависимости.

Ответ 7

Вот как я сделал это:

  • Я очистил свой пакет .json до последней версии,
  • Я сделал трюк @max23 _
  • Я заменил все #import '....h', которые вызывают ошибку для соответствующего #import <React/.....h>.

Ответ 8

Обновление от

импорт "RCT/BridgeModule.h"

в

импорт "React/RCT/BridgeModule.h"

чистить и строить.

Хотя я не проверял это, я подозреваю, что если бы я не внес никаких изменений и просто очистил бы и собрал бы это, то добился бы цели.

Ответ 9

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

Ответ 10

Изменение пути от:

#import <React/RCTBridgeModule.h>

чтобы:

#import <React/Base/RCTBridgeModule.h>

работал на меня.