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
снова, но это ничего не зафиксировало.
Ответы
Ответ 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
Эти шаги помогли решить мою проблему. Я попытался "Снять флажок распараллелить сборку". Это не сработало для меня.
- Откройте свой проект в XCode.
- Откройте папку "Библиотеки". Вы должны увидеть React.xcodeproj и несколько RCT *.xcodeproj.
- Перетащите React.xcodeproj в каждый из других проектов.
- Нажмите на каждый проект и перейдите на вкладку Build Phases.
- Нажмите на целевые зависимости и добавьте 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>
работал на меня.