React-native: После обновления до React-native 0.59 сборка iOS завершилась ошибкой

Созданный на 13 мар. 2019  ·  69Комментарии  ·  Источник: facebook/react-native

🐛 Отчет об ошибке

После обновления до версии 0.59 и попытки создать приложение для iOS я получаю следующую ошибку:

Не удается найти входной файл сборки: '/app/node_modules/react-native/ReactCommon/yoga/yoga/YGFloatOptional.cpp'

Что мне странно, так это то, что я не могу найти этот файл здесь ни в текущем мастере: react-native/tree/master/ReactCommon/yoga/yoga (только YGFloatOptional.h )

Воспроизводить

Мы обновили проект среднего размера с 0,57,7 до 0,59.

Ожидаемое поведение

Сборка должна выполняться так же, как и раньше.

Окружающая обстановка

  React Native Environment Info:
    System:
      OS: macOS 10.14.3
      CPU: (12) x64 Intel(R) Core(TM) i7-8850H CPU @ 2.60GHz
      Memory: 2.95 GB / 32.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 10.15.1 - /var/folders/1r/ymkpxdlj21lb638kzp4jxvwm0000gn/T/yarn--1552463658468-0.20119758467048565/node
      Yarn: 1.13.0 - /var/folders/1r/ymkpxdlj21lb638kzp4jxvwm0000gn/T/yarn--1552463658468-0.20119758467048565/yarn
      npm: 6.4.1 - /usr/local/Cellar/node@10/10.15.1/bin/npm
      Watchman: 4.9.0 - /usr/local/bin/watchman
    SDKs:
      iOS SDK:
        Platforms: iOS 12.1, macOS 10.14, tvOS 12.1, watchOS 5.1
      Android SDK:
        API Levels: 23, 24, 25, 27, 28
        Build Tools: 23.0.1, 23.0.3, 24.0.1, 25.0.0, 27.0.3, 28.0.3
        System Images: android-24 | ARM 64 v8a, android-24 | ARM EABI v7a, android-24 | Intel x86 Atom_64, android-28 | Google APIs Intel x86 Atom, android-28 | Google Play Intel x86 Atom_64
    IDEs:
      Android Studio: 3.3 AI-182.5107.16.33.5264788
      Xcode: 10.1/10B61 - /usr/bin/xcodebuild
    npmPackages:
      react: 16.8.3 => 16.8.3
      react-native: 0.59.0 => 0.59.0
Bug Follow Up iOS Locked

Самый полезный комментарий

У меня такая же проблема ... Каждый раз, когда возникает проблема с обновлениями в react native, так надоело ..

Все 69 Комментарий

Я только что воспроизвел эту проблему с XCode: 10.1 и RN 0.59.0.

РЕДАКТИРОВАТЬ 1 : я мог воспроизвести с помощью инструмента сборки XCode UI; но он отлично работает с react-native run-ios (убедитесь, что у вас установлена ​​последняя версия 2.x cli).
РЕДАКТИРОВАТЬ 2 : мне удалось заставить его работать с XCode 10.1 , включив устаревшую сборку . Относится к # 19573

Хм, я только что обновился с 0.58.4 до 0.59 , очистил каталоги сборки в XCode, и я смог запустить как отладку, так и архивировать приложение. Я использую XCode 10.1.
Моя стратегия обновления:

  1. Подберите зависимости в соответствии с последней стабильной версией.
  2. Просмотрите каждое сравнение на https://github.com/react-native-community/rn-diff-purge и примените его вручную.

Хотите знать, все ли может сработать для меня, потому что у меня был рабочий 0.58.4 и я просто применил новые вещи поверх него?

РЕДАКТИРОВАТЬ: Я также запустил npm ci , чтобы удалить мои node_modules (просто чтобы убедиться), и я все еще мог создать приложение из XCode 🤔

EDIT2: И у меня нет YGFloatOptional.cpp :
Screen Shot 2019-03-13 at 12 55 51

У меня такая же проблема при обновлении с 0.57.8 до 0.59.1.
Глядя на свежий файл инициализации 0.59.1, нет файла YGFloatOptional.cpp .

Добавьте эти строки в свой подфайл:

  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'

и беги

pod install

@jpudysz Да, это сработало после перехода на cocoapod и открытия проекта XCode с файлом .xcworkspace .
Мне пришлось соединить библиотеки react-native unlink и react-native link чтобы вместо этого они использовали Podfile .

Следует ли отказаться от устаревших (без кокосовых) ссылок?

@jpudysz У меня тоже работал. Конечно, это не может быть правильным решением, правда? Это серьезно раздувает проект. Pods/boost-for-react-native составляет 160,8 МБ.

Изменить: Хорошо, серьезно странно, я удалил эти 3 модуля, запустил Clean в Xcode и попытался собрать. На этот раз у меня не было ошибки при компиляции Yoga.

Спасибо @jpudysz . Следуя вашему решению, я получаю следующую ошибку:
Файл 'folly / Portability.h' не найден в JSBundleType.h

Кто-нибудь знает, что происходит?

Большое спасибо.

Попробовав то, что кажется почти всем, стандартное обновление RN, инструмент обновления git, применение патча diff, я закончил тем, что воссоздал совершенно новый проект и проделал чрезвычайно утомительную работу по восстановлению базы кода. Говорят, будет лучше с 0.59 .. надеюсь, что они правы

Я только что обновился с 0.59.0 до 0.59.1, и у меня это сработало
решил проблему с йогой

Я тоже обновился, но пока безуспешно.

У меня была такая же проблема. Старый добрый rm -rf node_modules && npm i и очистка папок сборки сделали это за меня

После использования npm audit fix мой «react-native» автоматически обновляется до версии 0.59, и я не могу не собрать свой проект.
Решение : понизить версию до более низкой.
npm install react-native@<version>
пример: npm install [email protected]

Я пробовал обновиться с 0.58.4 вручную (после изменений rn-diff-purge), но я также столкнулся с этой проблемой с RN 0.59.0 или 0.59.1

Да, у нас было YGFloatOptional.cpp до 0.58 https://github.com/facebook/react-native/blob/0.58-stable/ReactCommon/yoga/yoga/YGFloatOptional.cpp

Что, черт возьми, здесь происходит?

редактировать
Решение @jpudysz приводит меня к ошибке другого файла не найден 'folly/Portability.h' file not found

Возникла та же проблема с 'folly / Portability.h' после обновления с 0.58.4 до 0.59.0 и 0.59.1

Что странно, так это то, что после компиляции XCode сообщает, что Portability.h не найден, но в редакторе он получает все типы, определенные в заголовке ...

image

Не удается скомпилировать файл RCTJavasScriptLoader.mm в библиотеке React.


CompileC /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/Objects-normal/x86_64/RCTJavaScriptLoader.o /Users/xxx/Projects/xxx/node_modules/react-native/React/Base/RCTJavaScriptLoader.mm normal x86_64 objective-c++ com.apple.compilers.llvm.clang.1_0.compiler (in target: React)
    cd /Users/xxx/Projects/xxx/ios/Pods
    export LANG=en_US.US-ASCII
    /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/clang -x objective-c++ -arch x86_64 -fmessage-length=0 -fdiagnostics-show-note-include-stack -fmacro-backtrace-limit=0 -std=c++14 -stdlib=libc++ -fobjc-arc -fobjc-weak -fmodules -fmodules-cache-path=/Users/xxx/Projects/xxx/ios/build/xxx/ModuleCache.noindex -fmodules-prune-interval=86400 -fmodules-prune-after=345600 -fbuild-session-file=/Users/xxx/Projects/xxx/ios/build/xxx/ModuleCache.noindex/Session.modulevalidation -fmodules-validate-once-per-build-session -Wnon-modular-include-in-framework-module -Werror=non-modular-include-in-framework-module -Wno-trigraphs -fpascal-strings -O0 -fno-common -Wno-missing-field-initializers -Wno-missing-prototypes -Werror=return-type -Wdocumentation -Wunreachable-code -Wno-implicit-atomic-properties -Werror=deprecated-objc-isa-usage -Wno-objc-interface-ivars -Werror=objc-root-class -Wno-arc-repeated-use-of-weak -Wimplicit-retain-self -Wno-non-virtual-dtor -Wno-overloaded-virtual -Wno-exit-time-destructors -Wduplicate-method-match -Wno-missing-braces -Wparentheses -Wswitch -Wunused-function -Wno-unused-label -Wno-unused-parameter -Wunused-variable -Wunused-value -Wempty-body -Wuninitialized -Wconditional-uninitialized -Wno-unknown-pragmas -Wno-shadow -Wno-four-char-constants -Wno-conversion -Wconstant-conversion -Wint-conversion -Wbool-conversion -Wenum-conversion -Wno-float-conversion -Wnon-literal-null-conversion -Wobjc-literal-conversion -Wshorten-64-to-32 -Wno-newline-eof -Wno-selector -Wno-strict-selector-match -Wundeclared-selector -Wdeprecated-implementations -Wno-c++11-extensions -DPOD_CONFIGURATION_DEBUG=1 -DDEBUG=1 -DCOCOAPODS=1 -DOBJC_OLD_DISPATCH_PROTOTYPES=0 -isysroot /Applications/Xcode.app/Contents/Developer/Platforms/iPhoneSimulator.platform/Developer/SDKs/iPhoneSimulator12.1.sdk -fasm-blocks -fstrict-aliasing -Wprotocol -Wdeprecated-declarations -Winvalid-offsetof -mios-simulator-version-min=9.0 -g -Wno-sign-conversion -Winfinite-recursion -Wmove -Wcomma -Wblock-capture-autoreleasing -Wstrict-prototypes -Wrange-loop-analysis -Wno-semicolon-before-method-body -Wunguarded-availability -fobjc-abi-version=2 -fobjc-legacy-dispatch -index-store-path /Users/xxx/Projects/xxx/ios/build/xxx/Index/DataStore -iquote /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/React-generated-files.hmap -I/Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/React-own-target-headers.hmap -I/Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/React-all-non-framework-target-headers.hmap -ivfsoverlay /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/all-product-headers.yaml -iquote /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/React-project-headers.hmap -I/Users/xxx/Projects/xxx/ios/build/xxx/Build/Products/Debug-iphonesimulator/React/include -I/Users/xxx/Projects/xxx/ios/Pods/Headers/Private -I/Users/xxx/Projects/xxx/ios/Pods/Headers/Private/React -I/Users/xxx/Projects/xxx/ios/Pods/Headers/Public -I/Users/xxx/Projects/xxx/ios/Pods/Headers/Public/React -I/Users/xxx/Projects/xxx/ios/Pods/Headers/Public/yoga -I/Users/xxx/Projects/xxx/node_modules/react-native/ReactCommon -I/Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/DerivedSources/x86_64 -I/Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/DerivedSources -F/Users/xxx/Projects/xxx/ios/build/xxx/Build/Products/Debug-iphonesimulator/React -DFOLLY_NO_CONFIG -DFOLLY_MOBILE=1 -DFOLLY_USE_LIBCPP=1 -include /Users/xxx/Projects/xxx/ios/Pods/Target\ Support\ Files/React/React-prefix.pch -MMD -MT dependencies -MF /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/Objects-normal/x86_64/RCTJavaScriptLoader.d --serialize-diagnostics /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/Objects-normal/x86_64/RCTJavaScriptLoader.dia -c /Users/xxx/Projects/xxx/node_modules/react-native/React/Base/RCTJavaScriptLoader.mm -o /Users/xxx/Projects/xxx/ios/build/xxx/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/React.build/Objects-normal/x86_64/RCTJavaScriptLoader.o






In file included from /Users/xxx/Projects/xxx/node_modules/react-native/React/Base/RCTJavaScriptLoader.mm:12:
/Users/xxx/Projects/xxx/node_modules/react-native/ReactCommon/cxxreact/JSBundleType.h:

info fatal error:

'folly/Portability.h' file not found

 #include <folly/Portability.h>
          ^~~~~~~~~~~~~~~~~~~~~
 1 error generated.

У меня такая же проблема ... Каждый раз, когда возникает проблема с обновлениями в react native, так надоело ..

Файл, похоже, удален из проекта йоги с 13 декабря 2018 г. и «встроен» в yoga/YGFloatOptional.h : https://github.com/facebook/yoga/commit/96d93f29826257ff6e9bb6c19211adb423029c29

Я предполагаю, что ссылка на ReactCommon/yoga/yoga/YGFloatOptional.cpp больше не нужна.

Удаление кеша и пересборка проекта у меня не сразу сработали.

Поэтому я попытался перейти на React Native 0.59.1, а затем перестроить проект. Тоже не сработало.

Однако ТОГДА очистка моих node_modules, папок кеша и сборки и перестройка проекта работала, используя:

rm -rf $TMPDIR/react-* && rm -rf $TMPDIR/metro-* && rm -rf $TMPDIR/haste-* && watchman watch-del-all && npm cache clean --force && npm cache verify && rm -rf ios/build && rm -rf node_modules/ && npm i

Итак, похоже, что это связано с кешем.

Возможно, обновление до React Native 0.59.1 не требуется, я думаю, что часть сценария помогла мне.

Надеюсь, это поможет другим!

Я сдался, я удалил все ссылки на node_modules из файла Pods, затем удалил node_modules и каталог сборки и переустановил что-либо, а затем, наконец, снова успешно построил.

Это так утомительно.

@jvandenaardweg Думаю, вы правы, что это проблема кеширования.

Для меня сработало удаление папки с производными данными Xcode и перезапуск Xcode.
rm -rf ~/Library/Developer/Xcode/DerivedData

После перезапуска я попытался выполнить сборку, но она не удалась и предложила мне закрыть и снова открыть рабочее пространство xcode. Как только я это сделал, я снова попытался построить, и это сработало.

Хорошо, ребята, я думаю, что эта проблема в основном связана с проблемами с кешем сборки при обновлении (из чтения сообщений) - поэтому, если у вас есть проблемы, я думаю, что обычно их можно исправить:

  • Очистка производных данных в Xcode
  • rm -rf node_modules; rm -rf Pods затем переустановите
  • Использование react-native upgrade x.y.z

Я уверен, что это почти то же самое для каждой версии. Я бы, возможно, рассмотрел проблему с response-native-cli, чтобы улучшить это и, возможно, запустить некоторые из самих команд.

Есть ли у кого-нибудь конкретный шаг воспроизведения для этого?

Я также видел ошибку #include <folly/Portability.h> . В моем случае проблема отсутствовала в подфайле.

Он отлично подходит для меня с:

  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge', # Include this for RN >= 0.47
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # needed for debugging
    'RCTImage',
    'RCTWebSocket', # Needed for debugging
    'RCTAnimation', # Needed for FlatList and animations running on native UI thread
    # Add any other subspecs you want to use in your project
  ]

  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  # Third party deps podspec link
  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'

«Между react-native 0.57.8 и 0.58.5 есть одно большое изменение, которое было добавлено в проект Xcode: вам нужно добавить JavaScriptCore.Framework в связанные FrameWorks и библиотеки» - отсюда

PLUS

@jvandenaardweg ответ:

rm -rf $TMPDIR/metro-* && rm -rf $TMPDIR/haste-* && watchman watch-del-all && npm cache clean --force && npm cache verify && rm -rf ios/build && rm -rf node_modules/ && npm i

Сделал для меня работу.

Это действительно расстраивает, как говорили другие, необходимость угадывать, что это за нарушение кода, который работал раньше.

Также на Android мне пришлось обновить версию Build Gradle, чтобы снова работать.

нужно угадать

Мы знаем, что обновление было долгой болью для сообщества, поэтому, начиная с версии 0.59, мы ввели новый поток через новый интерфейс командной строки .

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

В любом случае, закрытие, так как это явно связано с обновлением - также в целом вы можете использовать rn-diff-repo для проверки всех необходимых шагов при обновлении.

Здравствуйте,

После долгих поисков мне удалось понять, почему у меня возникла проблема. Очистка кеша и все остальное не устранили проблему для меня, и у меня все еще был #include.

Он отлично компилировался для проекта React в моем проекте, но не компилировался для имеющихся у меня подов.

Даже после добавления модулей Folly / glog / DoubleConversion у меня все еще была проблема.

Затем я внес поправки в файл React.podspecs, чтобы отредактировать подспецификацию Core.

После добавления ссылки на Folly в pod_target_xcconfig он компилировался без каких-либо других проблем.

ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\"  \"$(PODS_ROOT)/Folly\"" }

А вот и полный подфайл, который у меня есть

ENV['COCOAPODS_DISABLE_STATS'] = 'true'

target 'CryptoReact' do
  platform :ios, '9.0'

  pod 'CodePush', :path => '../node_modules/react-native-code-push'
  pod 'Firebase/Core', '~> 5.14.0'


  pod 'react-native-sqlite-storage', :path => '../node_modules/react-native-sqlite-storage'
  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga/yoga.podspec'
  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'
  pod 'react-native-randombytes', :path => '../node_modules/react-native-randombytes'
  pod 'RNVectorIcons', :path => '../node_modules/react-native-vector-icons'
  pod 'react-native-splash-screen', :path => '../node_modules/react-native-splash-screen'
  pod 'RNLocalize', :path => '../node_modules/react-native-localize/ios'
  pod 'react-native-camera', :path => '../node_modules/react-native-camera'
  pod 'RNPermissions', :path => '../node_modules/react-native-permissions'
  pod 'react-native-keep-awake', :path => '../node_modules/react-native-keep-awake'
  pod 'SwiftyJSON', '4.2.0'
  pod 'Charts', '3.1.1' 
  pod 'Fabric', '~> 1.9.0'
  pod 'Crashlytics', '~> 3.12.0'
  pod 'Firebase/Performance', '~> 5.14.0'
  pod 'Firebase/Auth', '~> 5.14.0'
  pod 'lottie-ios', :path => '../node_modules/lottie-ios'
  pod 'lottie-react-native', :path => '../node_modules/lottie-react-native'
  pod 'react-native-webview', :path => '../node_modules/react-native-webview'
  pod 'RNScreens', :path => '../node_modules/react-native-screens'
  pod 'ReactNativeExceptionHandler', :podspec => '../node_modules/react-native-exception-handler/ReactNativeExceptionHandler.podspec'
  pod 'RCTRestart', :path => '../node_modules/react-native-restart/ios'
  pod 'react-native-version-number', :path => '../node_modules/react-native-version-number'
  pod 'RNBackgroundFetch', :path => '../node_modules/react-native-background-fetch'

  pod 'React', :path => '../node_modules/react-native', :subspec => [
    'Core',
    'ART',
    'cxxreact',
    'CxxBridge', # Include this for RN >= 0.47
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # needed for debugging
    'RCTImage',
    'RCTWebSocket', # Needed for debugging
    'RCTAnimation', # Needed for FlatList and animations running on native UI thread
    'RCTPushNotification',
    # Add any other subspecs you want to use in your project
  ]
end

swift4 = ['Charts']

post_install do |installer|
installer.pods_project.targets.each do |target|
  target.build_configurations.each do |config|
    if swift4.include?(target.name)
      config.build_settings['SWIFT_VERSION'] = '4.1'
    end
  end
end
end

Я в такой же ситуации. Я обновился с 0,57 до 0,59 после реагирования на родную разницу, и все работало отлично, пока я не обновил 0,58,6 до 0,59.

Я пробовал все в этой теме, но безуспешно, ошибка не найденного файла "folly / Portability.h" просто не хочет исчезать.

Откат до 0.58.6 работает отлично, но как только я обновляюсь до 0.59.0 или 0.59.1, появляется ошибка.

Изменить: я нашел файл в node_modules / response-native / Third-party / folly-2018.10.22.00 / folly / Portability.h, но он все еще говорит, что его там нет.

Я понимаю, что мой пост был очень непонятным ... Прошу прощения за это. Вот файл diff, который должен сделать его более понятным для людей, у которых есть проблемы с 'folly / Portability.h'

Попробуйте внести следующие изменения в файл nodes_modules / response-native / React.podspec, по крайней мере, в моем случае это сработало! Теперь я могу скомпилировать свой проект и запустить его без проблем.

diff --git a/node_modules/react-native/React.podspec b/node_modules/react-native/React.podspec

s.subspec "Core" do |ss|
[...]
     ss.header_dir           = "React"
     ss.framework            = "JavaScriptCore"
     ss.libraries            = "stdc++"
-    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\"" }
+    ss.pod_target_xcconfig  = { "HEADER_SEARCH_PATHS" => "\"$(PODS_TARGET_SRCROOT)/ReactCommon\"  \"$(PODS_ROOT)/Folly\"" }
   end

Делая то, что сказал @aaska, плюс добавляю
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'

в Podfile и pod их установка сработала для меня.

После использования советов @jpudysz , @jvandenaardweg и @johnryan , он тоже построился для меня.
Спасибо ребята!

@ th3ac3, который решил проблему для меня. Спасибо!

ни один из них не работал

@jvandenaardweg Думаю, вы правы, что это проблема кеширования.

Для меня сработало удаление папки с производными данными Xcode и перезапуск Xcode.
rm -rf ~/Library/Developer/Xcode/DerivedData

После перезапуска я попытался выполнить сборку, но она не удалась и предложила мне закрыть и снова открыть рабочее пространство xcode. Как только я это сделал, я снова попытался построить, и это сработало.

Спасибо, я сделал это, и это снова сработало.

Таким образом, после обновления diff до 59.4 (с использованием rn-diff-purge ) у меня все еще были те же проблемы, что и у всех здесь (сначала ошибка YGFloatOptional.cpp , а затем ошибка folly/Portability.h ). Однако ни одно из решений не сработало само по себе, поэтому вот что я сделал для решения проблем:

# Clean caches/build folder/existing pods
rm -rf node_modules
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ios/build
rm -rf ios/Pods

# Reinstall deps
npm install

Затем обновил мой подфайл следующим образом:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'CityChallenge' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  pod 'React', :path => '../node_modules/react-native', subspecs: [
    # Comment out any unneeded subspecs to reduce bundle size.
    'Core',
    'CxxBridge', # --> I was missing Cxxbridge here, may have resolved the issue for me as well
    'DevSupport',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTBlob',
    'RCTCameraRoll',
    'RCTGeolocation',
    'RCTImage',
    'RCTNetwork',
    'RCTPushNotification',
    'RCTSettings',
    'RCTTest',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket',
    'RCTLinkingIOS'
  ]

  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  # Third party --> This bit is also new
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'


end

После этого переустановил стручки

cd ios
pod install

Только после этого проект снова начал успешно строиться.

В моем случае я просто забыл сделать шаг:

если вы разработчик iOS, вам необходимо вручную связать JavaScriptCore.framework при обновлении; это можно сделать через Xcode, выполнив шаги, показанные здесь.

пример

после того, как я это сделал, xcode просто компилируется нормально

Ничего из вышеперечисленного не помогло мне

проверьте это: https://github.com/facebook/react-native/issues/18408#issuecomment -386696744
это решило проблему для меня.

поместите это в консоль -> xcrun -k --sdk iphoneos --show-sdk-path
если ответ
xcrun: _ ошибка: не удается найти SDK "iphoneos"
xcrun: ошибка: не удается найти SDK «iphoneos»
xcrun: ошибка: невозможно найти элемент «Путь» в SDK «iphoneos»

затем поместите этот sudo xcode-select --switch /Applications/Xcode.app

Затем снова установите pod

Этот ответ сработал для меня. Вдобавок ко всему, что было упомянуто выше в этой теме, мне нужно было повторно открыть терминал, на котором работал мой сборщик метро.

понизить до "react-native": "0.57.4", чем снова работает

понизить до "react-native": "0.57.4", чем снова работает

Я не думаю, что переход на эту версию - лучший способ @miukki. Эта версия (0.59) обеспечивает 64-разрядную поддержку приложений Android, и она понадобится вам в будущем для публикации приложений (информация здесь ).

Привет, после того, как я подошел ко всем вышеперечисленным решениям, я поймал еще одну ошибку

ld: предупреждение: каталог не найден для опции '-F / Users / pumeo / Library / Developer / Xcode / DerivedData / GreenPlanet-cekcooliietupofcqlsnkupeolal / Build / Products / Debug-iphonesimulator / React'
ld: framework не найден React
clang: error: команда компоновщика завершилась неудачно с кодом выхода 1 (используйте -v, чтобы увидеть вызов)

когда я вставил post_install

кто-нибудь может помочь, пожалуйста?
Я использую хакинтош

@ Pumeo1010 , пожалуйста, продолжайте тему.

По теме: если этот вопрос закрыт, какое решение? Я пробовал все выше и как-то работал (не знаю, что помогло). Теперь мне пришлось перестраивать и снова столкнуться с той же проблемой, и что бы я ни пытался, он больше не работал.

Обновление: наконец-то он снова заработал! Я не совсем уверен, но я думаю, что удаление данных, полученных из Xcode, удаление Podfile.lock, удаление / повторная установка pods-dir, очистка папки сборки Xcode и перезагрузка системы в конечном итоге сделали трюк.

Я пытаюсь обновить React Native почти два дня с 0.57.8 до 0.59.9. Я пробовал все решения выше этого комментария, но все равно получаю те же ошибки. Повторяющиеся символы, заголовки не найдены, YGFloatOptional.cpp не найден .... Я создал новый проект React Native, а затем скопировал мои существующие файлы проекта в новый проект и применил различия с помощью rn-diff-purge . Опять же, с этим способом у меня было много разных ошибок сборки, и, наконец, я сдался! Я люблю v0.57.8

Таким образом, после обновления diff до 59.4 (с использованием rn-diff-purge ) у меня все еще были те же проблемы, что и у всех здесь (сначала ошибка YGFloatOptional.cpp , а затем ошибка folly/Portability.h ). Однако ни одно из решений не сработало само по себе, поэтому вот что я сделал для решения проблем:

# Clean caches/build folder/existing pods
rm -rf node_modules
rm -rf ~/Library/Developer/Xcode/DerivedData
rm -rf ios/build
rm -rf ios/Pods

# Reinstall deps
npm install

Затем обновил мой подфайл следующим образом:

# Uncomment the next line to define a global platform for your project
# platform :ios, '9.0'

target 'CityChallenge' do
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  pod 'React', :path => '../node_modules/react-native', subspecs: [
    # Comment out any unneeded subspecs to reduce bundle size.
    'Core',
    'CxxBridge', # --> I was missing Cxxbridge here, may have resolved the issue for me as well
    'DevSupport',
    'RCTActionSheet',
    'RCTAnimation',
    'RCTBlob',
    'RCTCameraRoll',
    'RCTGeolocation',
    'RCTImage',
    'RCTNetwork',
    'RCTPushNotification',
    'RCTSettings',
    'RCTTest',
    'RCTText',
    'RCTVibration',
    'RCTWebSocket',
    'RCTLinkingIOS'
  ]

  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  # Third party --> This bit is also new
  pod 'Folly', :podspec => '../node_modules/react-native/third-party-podspecs/Folly.podspec'


end

После этого переустановил стручки

cd ios
pod install

Только после этого проект снова начал успешно строиться.

@Hless Привет. Я попробовал ваше решение. Вот мой подфайл

target '..' do
   # this is very important to have!
   rn_path = '../node_modules/react-native'
   pod 'yoga', path: "#{rn_path}/ReactCommon/yoga/yoga.podspec"
   pod 'React', path: rn_path, subspecs: [
     'Core',
     'CxxBridge',
     'RCTActionSheet',
     'RCTAnimation',
     'RCTGeolocation',
     'RCTImage',
     'RCTLinkingIOS',
     'RCTNetwork',
     'RCTSettings',
     'RCTText',
     'RCTVibration',
     'RCTWebSocket'
   ]

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

   pod 'AppCenter/Crashes', '~> 1.12.0'
   pod 'AppCenter/Analytics', '~> 1.12.0'
   pod 'AppCenterReactNativeShared', '~> 1.11.0'
   pod 'Fabric'
   pod 'Crashlytics'
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  platform :ios, '9.0'
  pod 'react-native-webview', :path => '../node_modules/react-native-webview'
  pod 'react-native-document-picker', :path => '../node_modules/react-native-document-picker'

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

  pod 'RNReanimated', :path => '../node_modules/react-native-reanimated'

  pod 'rn-fetch-blob', :path => '../node_modules/rn-fetch-blob'

  pod 'react-native-netinfo', :path => '../node_modules/@react-native-community/netinfo'

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

end

post_install do |installer|
  installer.pods_project.targets.each do |target|
    if target.name == "React"
      target.remove_from_project
    end
  end
end

Но на этот раз сборка не удалась из-за ошибки повторяющихся символов. Я нашел это решение, и теперь оно успешно строится. Но теперь у меня другая проблема. Как только я запускаю приложение, оно сразу вылетает. Я нашел причину ошибки в области отладки Xcode, и это
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RCTRootView reactTag]: unrecognized selector sent to instance 0x7fbf02c05530'
решение этой проблемы противоположно другому решению. Какая плохая история обновления. :(

Наконец, я успешно собрал проект iOS и запустил его на симуляторе без каких-либо ошибок после напряженной работы над прогрессом обновления. Сначала я применил различия с помощью rn-diff-purge, затем применил решение @Hless , в конце я столкнулся с ошибкой повторяющихся символов, и, выполнив шаги в этом решении, я исправил их, теперь проект работает правильно.

Устранено следующее:

rm -rf node_modules
rm -rf ios/Pods
rm ios/Podfile.lock 
rm -rf ~Library/Developer/Xcode/DerivedData

Затем я переустановил свои зависимости (npm и pod), и это сработало :)

rm -rf ~ Библиотека / Разработчик / XCode / DerivedData

правая строка будет: rm -rf ~/Library/Developer/Xcode/DerivedData

Каждый раз, когда я сталкиваюсь с проблемой, когда RN выдает какое-то бессмысленное сообщение об ошибке, я отправляюсь в отчаянную охоту на github за решениями. В большинстве случаев решение заключается в удалении кеша, удалении производных данных, повторном открытии Xcode, очистке папок сборки и т. Д. За прошедшие годы я собрал этот сценарий bash, который я добавил как сценарий npm в свой package.json. Теперь мое первое решение goto для большинства проблем - npm run clear .

// package.json
{
  "scripts": {
    "clear": ". scripts/Clear.sh",
  }
}
// scripts/Clear.sh
#!/bin/bash

echo "rm -rf ios/build..."
rm -rf ios/build

echo "rm -rf android/app/build..."
rm -rf android/app/build

echo "Removed all Xcode derived data..."
rm -rf ~/Library/Developer/Xcode/DerivedData

echo "rm -rf lib... (for Flow)"
rm -rf lib

echo "watchman watch-del-all..."
watchman watch-del-all

echo "rm -rf node_modules..."
rm -rf node_modules

echo "npm install..."
npm install

echo "rm -rf $TMPDIR/react-*..."
rm -rf $TMPDIR/react-*

echo "rm -rf $TMPDIR/haste-map-react-native-packager-*..."
rm -rf $TMPDIR/haste-map-react-native-packager-*

PS. И для меня это тоже решило эту проблему: D

просто pod install действительно сработало для меня

Пожалуйста. пониженная версия Xcode 10.1

Еще один react-native link мне помог. :(

React Native неустойчив, предлагается 100 решений для каждой обнаруженной ошибки. Одно изменение, и весь процесс сборки, шаблон и причина использования React Native разваливаются. Как компании могут действительно добавить этот процесс разработки в линейку продуктов? смешной!!!!

Говорят, будет лучше с 0.59 .. надеюсь, что они правы

@philipaarseth Надеюсь, вы съели свои слова, когда вышла версия 0.60 😆

Я видел это в других потоках раньше, но выполнение следующих задач решило для меня проблему:

cd node_modules/react-native/scripts
./ios-install-third-party.sh

Я думал, что это было исправлено в версии 0.59 или ранее, и я помню, как видел, как он запускался автоматически в некоторых сборках, но похоже, что все еще есть случаи, когда он отсутствует.

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

Выполните эту команду: $ conda deactivate

@jpudysz спасибо, у меня работает. но почему ошибка сборки йоги имеет Relationshop с folly / glog / doubleConversion?

мой журнал ошибок:
Следующие команды вызвали проблемы с анализатором:
Анализируйте /Users/superqa/jenkins/workspace/xxxxx-xxxx-iOS-new/node_modules/react-native/ReactCommon/yoga/yoga/Yoga.cpp normal arm64
Анализируйте базу / модуль RCTM Метод. Мм нормальная рука64
(2 команды с проблемами анализатора)

Андроид действительно работает отлично, просто iOS ... :-(

К сожалению, единственное многообещающее решение - это понижение версии RN.

Это становится довольно сложно при наличии большого количества сторонних зависимостей.

в моем случае Xcode просто произвел автоматическое обновление и вызвал такую ​​проблему.
что я сделал для решения проблемы:
cd ios
rm -fr Стручки
rm Podfile.lock
установка стручка

переустановите модули и подфайл решил мою проблему

Удалить производные данные
cd ios
удалить Pods и Podfile.lock
установка стручка

Я выполнил все вышеперечисленные шаги, заработал сборку и теперь получаю эту ошибку. FWIW Я обновляюсь с Xcode 10.1 -> 11.1 И я обновляю нативную реакцию с 0.57.8 -> 0.59.9

dyld: Library not loaded: @rpath/XCTest.framework/XCTest
  Referenced from: /Users/par/Library/Developer/CoreSimulator/Devices/2B68242E-D2AF-49A4-9AEA-C320820D8D2F/data/Containers/Bundle/Application/E665681B-C213-42C0-9A51-746B4CA17599/Kismet.app/Kismet
  Reason: image not found

edit: Я удалил RCTTest из подфайла, и после этого все стало хорошо.

Я также видел ошибку #include <folly/Portability.h> . В моем случае проблема отсутствовала в подфайле.

Он отлично подходит для меня с:

  pod 'React', :path => '../node_modules/react-native', :subspecs => [
    'Core',
    'CxxBridge', # Include this for RN >= 0.47
    'DevSupport', # Include this to enable In-App Devmenu if RN >= 0.43
    'RCTText',
    'RCTNetwork',
    'RCTWebSocket', # needed for debugging
    'RCTImage',
    'RCTWebSocket', # Needed for debugging
    'RCTAnimation', # Needed for FlatList and animations running on native UI thread
    # Add any other subspecs you want to use in your project
  ]

  pod 'yoga', :path => '../node_modules/react-native/ReactCommon/yoga'

  # Third party deps podspec link
  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'

У меня возникла проблема с установкой glog, и в итоге мне пришлось выпустить эту команду sudo xcode-select --switch /Applications/Xcode.app/ , потому что я запускал Xcode из другого каталога, а затем переместил его в свой каталог / Applications, и все инструменты были испорчены .

@jenskuhrjorgensen ваша rm удаляет весь $ TMPDIR из-за наличия там пробела.

@ jduffy7 Это, наверное, перебор 😄 Спасибо, исправили!

@jenskuhrjorgensen Спасибо !!!!!

Запуск pod update сработал для меня.

Любое обновление ..?

Вышеуказанные решения не помогли, следующее помогло моему проекту снова построить.

cd ios
pod repo update
pod update

После выполнения этих команд я смог построить на xcode, но не используя react-native run-ios . Затем я выполнил эти команды (спасибо https://github.com/facebook/react-native/issues/23886#issuecomment-509528212):

rm -rf ios/build
rm -rf ~/Library/Developer/Xcode/DerivedData
watchman watch-del-all
rm -rf node_modules
npm install

что помогло мне снова построить с использованием react-native run-ios .

@khanguslee Я делаю это, но, к сожалению, ничего не получается

и получил эту ошибку

* СБОЙ СОЗДАТЬ *

Не удалось выполнить следующие команды сборки:
PhaseScriptExecution [CP] Проверить модули Manifest.lock /../ios/build/music/Build/Intermediates.noindex/music.build/Debug-iphonesimulator/music.build/Script-C5D676D55145145333E00AC9.sh
(1 сбой)

Отображение всех сообщений
: -1: Песочница не синхронизирована с Podfile.lock. Запустите pod install или обновите установку CocoaPods.

Песочница не синхронизирована с Podfile.lock. Запустите pod install или обновите установку CocoaPods.

Быстрый поиск в Google с сообщением об ошибке дает мне решение .

Была ли эта страница полезной?
0 / 5 - 0 рейтинги