Файл React / RCTDefines.h 'не найден (RN0.61) - PullRequest
1 голос
/ 14 октября 2019

Выполнено обновление RN с 0,60 до 0,61. Сбой сборки с iOS из-за следующей проблемы:

/react-native/React/Base/RCTBridgeModule.h:10:9: 'React/RCTDefines.h' file not found

Мне известно об этих критических изменениях . (React.xcodeproj устарел)

Попробуйте несколько вещей

  1. npx response-native-clean-project & re-setup project
  2. remove Pods / & podустановить
  3. ... на исходе ...

Вот как выглядит мой подфайл.

  pod 'FBLazyVector', :path => "../node_modules/react-native/Libraries/FBLazyVector"
  pod 'FBReactNativeSpec', :path => "../node_modules/react-native/Libraries/FBReactNativeSpec"
  pod 'RCTRequired', :path => "../node_modules/react-native/Libraries/RCTRequired"
  pod 'RCTTypeSafety', :path => "../node_modules/react-native/Libraries/TypeSafety"

  pod 'React', :path => '../node_modules/react-native/'
  pod 'React-Core', :path => '../node_modules/react-native/'
  pod 'React-CoreModules', :path => '../node_modules/react-native/React/CoreModules'
  pod 'React-Core/DevSupport', :path => '../node_modules/react-native/'
  pod 'React-RCTActionSheet', :path => '../node_modules/react-native/Libraries/ActionSheetIOS'
  pod 'React-RCTAnimation', :path => '../node_modules/react-native/Libraries/NativeAnimation'
  pod 'React-RCTBlob', :path => '../node_modules/react-native/Libraries/Blob'
  pod 'React-RCTImage', :path => '../node_modules/react-native/Libraries/Image'
  pod 'React-RCTLinking', :path => '../node_modules/react-native/Libraries/LinkingIOS'
  pod 'React-RCTNetwork', :path => '../node_modules/react-native/Libraries/Network'
  pod 'React-RCTSettings', :path => '../node_modules/react-native/Libraries/Settings'
  pod 'React-RCTText', :path => '../node_modules/react-native/Libraries/Text'
  pod 'React-RCTVibration', :path => '../node_modules/react-native/Libraries/Vibration'
  pod 'React-Core/RCTWebSocket', :path => '../node_modules/react-native/'

  pod 'React-cxxreact', :path => '../node_modules/react-native/ReactCommon/cxxreact'
  pod 'React-jsi', :path => '../node_modules/react-native/ReactCommon/jsi'
  pod 'React-jsiexecutor', :path => '../node_modules/react-native/ReactCommon/jsiexecutor'
  pod 'React-jsinspector', :path => '../node_modules/react-native/ReactCommon/jsinspector'
  pod 'ReactCommon/jscallinvoker', :path => '../node_modules/react-native/ReactCommon'
  pod 'ReactCommon/turbomodule/core', :path => '../node_modules/react-native/ReactCommon'
  pod 'Yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  pod 'DoubleConversion', :podspec => '../node_modules/react-native/third-party-podspecs/DoubleConversion.podspec'
  pod 'glog', :podspec => '../node_modules/react-native/third-party-podspecs/glog.podspec'
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'

  # Required by RNFirebase
  pod 'Firebase/Core', '~> 6.9.0'
  pod 'RNFirebase', :path => '../node_modules/react-native-firebase/ios'
  pod 'Fabric', '~> 1.10.2'
  pod 'Crashlytics', '~> 3.14.0'

  # FBSDK
  pod 'react-native-fbsdk', :path => '../node_modules/react-native-fbsdk'

  pod 'react-native-netinfo', :path => '../node_modules/@react-native-community/netinfo'
  pod 'react-native-image-picker', :path => '../node_modules/react-native-image-picker'
  pod 'react-native-splash-screen', :path => '../node_modules/react-native-splash-screen'
  pod 'react-native-webview', :path => '../node_modules/react-native-webview'

Ответы [ 2 ]

1 голос
/ 15 октября 2019

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

TLDR;

Вам нужно добавить .podspec в podfile для любой сторонней / пользовательской библиотеки, которая не может найти React / {what.h}


Сторонние библиотеки

Если вы используете стороннюю библиотеку (Yarn / NPM / и т. Д.)

  1. Копировать podspec из другой сторонней библиотеки (например, RNDeviceInfo / etc ..)

  2. Создайте свой собственный podspec, заменив несколько элементов (s.name, s.source) Я фактически оставил другие по умолчанию, но вы можете изменить их в соответствии с вашим использованием, если хотите

s.name         = "NoSupportedLib"
s.source       = { :git => "https://github.com/react-native-community/NoSupportedLibName.git", :tag => "v#{s.version}" }

Возможно, вы захотите позаботиться о следующем, поскольку не все ваши зависимости могут храниться в пути к папке ios/**/your.m & your.h files

s.source_files  = "ios/**/*.{h,m}"

Добавить новую строку в подфайл pod 'NoSupportedLib', :path => '../node_modules/NoSupportedLib'

Под установку

Локальные зависимости

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

  1. Следуйте тому жешаги, как описано сверху
  2. На шаге 2, где вы объявляете файлы s.source & s.source_files, вы должны сделать следующее: (Предполагается, что вы создаете этот custom.podspec по тому же пути пользовательской библиотекив противном случае вам потребуется изменить путь s.source по мере необходимости)
s.source            = { :http => 'file:' + __dir__ + '/' }
s.source_files  = "customLib/*.{h,m}"
Добавить новую строку в подфайл
pod 'customLib', :path => '../localDependency/customLib'


Подпункты

Я пытался добавить React под моимСхема как целевая сборка, видимо, не помогает. Я думаю, что для проекта, который> = RN0,60, мы должны использовать автосвязь , предоставленную ReactNative? Следовательно, чтобы сохранить Linked Framework и библиотеки нашего Xcode в чистоте. enter image description here

0 голосов
/ 14 октября 2019

У меня была такая же проблема некоторое время назад. Исправлено после: product > scheme > edit scheme, перейдите на вкладку сборки и добавьте react в качестве первой цели.

enter image description here

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...