React-native: Après la mise à niveau vers la version iOS 0.59 native de réaction échoue

Créé le 13 mars 2019  ·  69Commentaires  ·  Source: facebook/react-native

🐛 Rapport de bogue

Après la mise à jour vers react-native 0.59 et en essayant de créer l'application pour iOS, j'obtiens l'erreur suivante:

Le fichier d'entrée de construction est introuvable: '/app/node_modules/react-native/ReactCommon/yoga/yoga/YGFloatOptional.cpp'

Ce qui m'est étrange, c'est que je ne trouve pas ce fichier ici non plus dans le master actuel: react-native/tree/master/ReactCommon/yoga/yoga (seulement YGFloatOptional.h )

Reproduire

Nous avons amélioré un projet de taille moyenne de 0,57,7 → 0,59.

Comportement prévisible

Build devrait fonctionner correctement comme avant.

Environnement

  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

Commentaire le plus utile

J'ai eu le même problème ..., Chaque fois qu'il y a un problème avec les mises à niveau dans React Native si fatigué ...

Tous les 69 commentaires

Je viens de reproduire ce problème avec XCode: 10.1 et RN 0.59.0.

EDIT 1 : Je pourrais reproduire avec l'outil de construction XCode UI; mais cela fonctionne bien avec react-native run-ios (assurez-vous d'avoir le dernier cli 2.x).
EDIT 2 : J'ai réussi à le faire fonctionner avec XCode 10.1 en activant la version héritée . Associé à # 19573

Hmm, je viens de passer de 0.58.4 à 0.59 , de nettoyer les répertoires de construction dans XCode et j'ai pu exécuter à la fois le débogage et l'archivage de l'application. J'utilise XCode 10.1.
Ma stratégie de mise à niveau:

  1. Bump des dépendances selon la version stable la plus récente.
  2. Parcourez chaque comparaison sur https://github.com/react-native-community/rn-diff-purge et appliquez-la manuellement.

Vous vous demandez si tout pourrait fonctionner pour moi parce que j'avais travaillé 0.58.4 et que je venais d'appliquer de nouvelles choses en plus?

EDIT: J'ai également exécuté npm ci afin de supprimer mon node_modules (juste pour être sûr) et j'ai toujours pu créer l'application à partir de XCode 🤔

EDIT2: Et je n'ai pas YGFloatOptional.cpp :
Screen Shot 2019-03-13 at 12 55 51

J'obtiens le même problème lors de la mise à niveau de 0.57.8 -> 0.59.1.
En regardant une nouvelle init 0.59.1, il n'y a pas YGFloatOptional.cpp fichier

Ajoutez ces lignes à votre Podfile:

  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'

et courir

pod install

@jpudysz Oui, cela a fonctionné après la migration vers cocoapod et l'ouverture du projet XCode avec le fichier .xcworkspace .
J'ai dû utiliser les bibliothèques pontées react-native unlink et react-native link pour qu'elles utilisent plutôt Podfile .

Les liens hérités (sans cocoapode) devraient-ils être abandonnés?

@jpudysz a également travaillé pour moi. Cela ne peut certainement pas être la bonne solution, n'est-ce pas? Cela gonfle sérieusement le projet. Pods/boost-for-react-native correspond à 160,8 Mo.

Edit: Ok sérieusement étrange, j'ai supprimé ces 3 pods, exécuté Clean dans Xcode et essayé de construire. Cette fois, je n'ai pas eu d'erreur lors de la compilation de Yoga.

Merci @jpudysz . Suite à votre solution, j'obtiens alors l'erreur suivante:
Fichier 'folly / Portability.h' introuvable dans JSBundleType.h

Quelqu'un sait-il ce qui se passe?

Merci beaucoup.

Après avoir essayé ce qui ressemble à à peu près tout, la mise à niveau standard RN, l'outil de mise à niveau git, l'application du patch de diff, j'ai fini par recréer un projet complètement nouveau et faire le travail extrêmement fastidieux de reconstruction de la base de code. Ils disent que ce sera mieux à partir de 0,59 ... j'espère qu'ils ont raison à ce sujet

Je viens de passer de 0.59.0 à 0.59.1 et cela a fonctionné pour moi
résolu le problème du yoga

J'ai mis à niveau aussi mais sans chance pour l'instant.

J'ai eu exactement le même problème. Le bon vieux rm -rf node_modules && npm i et le nettoyage des dossiers de construction l'ont fait pour moi

Après avoir utilisé npm audit fix , mes 'react-native' sont automatiquement mis à niveau vers la version 0.59 et je ne peux pas ne pas construire mon projet.
Solution : rétrograder la version à une version inférieure.
npm install react-native@<version>
exemple: npm install [email protected]

J'ai essayé de mettre à jour manuellement à partir de 0.58.4 (après les changements de rn-diff-purge) mais je suis également confronté à ce problème avec RN 0.59.0 ou 0.59.1

Ouais, nous avions YGFloatOptional.cpp jusqu'à 0,58 https://github.com/facebook/react-native/blob/0.58-stable/ReactCommon/yoga/yoga/YGFloatOptional.cpp

Mais qu'est ce qu'il se passe ici?

Éditer
La solution de @jpudysz me conduit à un autre fichier non trouvé erreur 'folly/Portability.h' file not found

Vous avez le même problème avec 'folly / Portability.h' après la mise à niveau de 0.58.4 à 0.59.0 et 0.59.1

Ce qui est bizarre, c'est que XCode déclare après la compilation que Portability.h n'est pas trouvé, mais dans l'éditeur, il obtient tous les types définis dans l'en-tête ...

image

Le fichier qui n'a pas pu être compilé est RCTJavasScriptLoader.mm dans la bibliothèque 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.

J'ai eu le même problème ..., Chaque fois qu'il y a un problème avec les mises à niveau dans React Native si fatigué ...

Le fichier semble avoir été supprimé du projet de yoga depuis le 13 décembre 2018 et "intégré" dans yoga/YGFloatOptional.h : https://github.com/facebook/yoga/commit/96d93f29826257ff6e9bb6c19211adb423029c29

Je suppose que la référence à ReactCommon/yoga/yoga/YGFloatOptional.cpp n'est plus nécessaire.

La suppression du cache et la reconstruction du projet n'ont pas fonctionné pour moi tout de suite.

J'ai donc essayé de mettre à niveau vers React Native 0.59.1 puis de reconstruire le projet. Cela n'a pas fonctionné non plus.

Cependant, ALORS nettoyer mes node_modules, mettre en cache et créer des dossiers et reconstruire le projet a fonctionné, en utilisant:

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

Donc, cela semble lié au cache.

La mise à niveau vers React Native 0.59.1 n'est peut-être pas nécessaire, je pense qu'une partie du script a fait l'affaire pour moi.

J'espère que cela aide les autres!

J'ai abandonné, j'ai supprimé tous les liens vers node_modules du fichier Pods, puis supprimez node_modules et le répertoire de construction et réinstallé tout puis finalement construit à nouveau avec succès.

C'est tellement épuisant.

@jvandenaardweg Je pense que vous avez raison de dire que c'est un problème de mise en cache.

Pour moi, ce qui a fonctionné était de supprimer le dossier de données dérivées de mon Xcode et de redémarrer Xcode.
rm -rf ~/Library/Developer/Xcode/DerivedData

Une fois que j'ai redémarré, j'ai tenté une compilation et cela a échoué et m'a invité à fermer et rouvrir mon espace de travail xcode. Une fois que j'ai fait cela, j'ai essayé de reconstruire et cela a fonctionné.

Très bien, je pense que ce problème concerne généralement les problèmes de cache de construction lors de la mise à niveau (en lisant les articles) - donc si vous rencontrez des problèmes, je pense qu'il peut généralement être résolu par:

  • Nettoyage des données dérivées dans Xcode
  • rm -rf node_modules; rm -rf Pods puis réinstallez
  • Avec react-native upgrade x.y.z

C'est à peu près la même chose pour chaque version, je parie. Je voudrais peut-être envisager de créer un problème sur le react-native-cli pour améliorer cela et peut-être exécuter certaines des commandes elles-mêmes.

Quelqu'un a-t-il une étape de reproduction spécifique pour cela?

Je voyais également l'erreur #include <folly/Portability.h> . Le problème dans mon cas était l'absence de sous-spécifications dans le fichier pod.

Cela me convient parfaitement avec:

  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'

"Entre 0,57,8 et 0,58,5 react-native, il y a un grand changement qui a été ajouté dans le projet Xcode est que vous devez ajouter JavaScriptCore.Framework aux FrameWorks et bibliothèques liés" - à partir d'ici

PLUS

Réponse @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

A fait le travail pour moi.

C'est vraiment frustrant, comme d'autres l'ont dit, d'avoir besoin de deviner ce que c'est de casser un code qui fonctionnait auparavant.

Aussi sur Android, j'ai dû mettre à niveau la version Build Gradle pour fonctionner à nouveau.

besoin de deviner

Nous savons que la mise à niveau a été une douleur durable pour la communauté, donc à partir de la v0.59, nous avons introduit un nouveau flux via la nouvelle CLI .

Cela dit, nous avons écrit les changements de rupture dans le journal des modifications et dans l' onglet des versions, donc il n'y a pas vraiment besoin de deviner.

Quoi qu'il en soit, fermeture car cela est clairement lié à la mise à niveau - également, en général, vous pouvez utiliser rn-diff-repo pour vérifier toutes les étapes nécessaires lors de la mise à niveau.

Bonjour,

Après beaucoup de recherches, j'ai réussi à comprendre pourquoi j'ai eu le problème. Nettoyer le cache et tout n'a pas résolu le problème pour moi et j'avais toujours le #include.

La compilation était correcte pour le projet React dans le cadre de mon projet, mais n'a pas réussi à compiler pour les pods que j'ai.

Même après avoir ajouté les pods Folly / glog / DoubleConversion, j'avais toujours le problème.

J'ai ensuite modifié le fichier React.podspecs pour modifier la sous-spécification Core

Après avoir ajouté la référence Folly au pod_target_xcconfig, il était compilé sans aucun autre problème.

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

Et voici le podfile complet que j'ai

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

Je suis dans la même situation. J'ai mis à niveau de 0,57 à 0,59 après la réaction native diff et tout a parfaitement fonctionné jusqu'à ce que je mette à niveau 0,58,6 à 0,59.

J'ai tout essayé sur ce fil sans chance, l'erreur de fichier 'folly / Portability.h' introuvable ne veut tout simplement pas disparaître.

Revenir à 0.58.6 fonctionne parfaitement mais au moment où je mets à jour à 0.59.0 ou 0.59.1, l'erreur apparaît.

Edit: J'ai trouvé le fichier dans node_modules / react-native / third-party / folly-2018.10.22.00 / folly / Portability.h mais il dit toujours que ce n'est pas là.

Je me rends compte que mon message n'était pas très clair ... Désolé pour ça. Voici le fichier diff qui devrait le rendre plus explicite pour les personnes ayant des problèmes avec 'folly / Portability.h'

Essayez d'apporter la modification suivante au fichier nodes_modules / react-native / React.podspec, du moins dans mon cas, cela a fonctionné! Je peux maintenant compiler mon projet et le lancer sans problème.

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

Faire ce que @aaska a dit et ajouter
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'

au Podfile et au pod en les installant a fonctionné pour moi.

Après avoir utilisé les astuces @jpudysz , @jvandenaardweg et @johnryan , cela a également été
Merci les gars!

@ th3ac3 qui a résolu le problème pour moi. Je vous remercie!

aucun d'eux n'a fonctionné

@jvandenaardweg Je pense que vous avez raison de dire que c'est un problème de mise en cache.

Pour moi, ce qui a fonctionné était de supprimer le dossier de données dérivées de mon Xcode et de redémarrer Xcode.
rm -rf ~/Library/Developer/Xcode/DerivedData

Une fois que j'ai redémarré, j'ai tenté une compilation et cela a échoué et m'a invité à fermer et rouvrir mon espace de travail xcode. Une fois que j'ai fait cela, j'ai essayé de reconstruire et cela a fonctionné.

Merci, j'ai fait ça et ça a fonctionné à nouveau.

Donc, après avoir suivi la mise à niveau diff vers 59.4 (en utilisant rn-diff-purge ), j'ai toujours eu les mêmes problèmes que tout le monde ici (erreur YGFloatOptional.cpp d'abord, puis l'erreur folly/Portability.h ). Cependant, aucune des solutions n'a fonctionné d'elle-même, c'est donc ce que j'ai fait pour résoudre les problèmes:

# 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

Puis mis à jour mon Podfile comme suit:

# 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

Après cela, j'ai réinstallé les pods

cd ios
pod install

Ce n'est qu'alors que le projet a recommencé à être construit avec succès

Dans mon cas, j'ai juste oublié de faire l'étape:

si vous êtes un développeur iOS, vous devrez lier manuellement JavaScriptCore.framework lors de la mise à niveau; cela peut être fait via Xcode et en suivant les étapes indiquées ici.

exemple

après avoir fait ça, xcode compile juste ok

Aucun de ces éléments n'a fonctionné pour moi

Vérifiez ceci: https://github.com/facebook/react-native/issues/18408#issuecomment -386696744
cela a résolu le problème pour moi.

mettez ceci dans la console -> xcrun -k --sdk iphoneos --show-sdk-path
si la réponse est
xcrun: _ erreur: le SDK "iphoneos" est introuvable
xcrun: erreur: le SDK "iphoneos" est introuvable
xcrun: erreur: impossible de rechercher l'élément 'Path' dans le SDK 'iphoneos'

puis mettez ce sudo xcode-select --switch /Applications/Xcode.app

Puis réinstallez le pod

Cette réponse a fonctionné pour moi. En plus de toutes les choses mentionnées ci-dessus dans ce fil, j'avais besoin de rouvrir le terminal que mon groupeur de métro exécutait.

rétrograder à "react-native": "0.57.4", que cela fonctionne à nouveau

rétrograder à "react-native": "0.57.4", que cela fonctionne à nouveau

Je ne pense pas que la mise à niveau vers cette version soit la meilleure façon de @miukki. Cette version (0.59) apporte un support 64 bits pour les applications Android et vous en avez besoin comme une exigence future pour publier des applications (info ici ).

Hé après avoir abordé toutes les solutions ci-dessus, j'ai attrapé une autre erreur

ld: avertissement: répertoire introuvable pour l'option '-F / Users / pumeo / Library / Developer / Xcode / DerivedData / GreenPlanet-cekcooliietupofcqlsnkupeolal / Build / Products / Debug-iphonesimulator / React'
ld: framework non trouvé React
clang: erreur: la commande de l'éditeur de liens a échoué avec le code de sortie 1 (utilisez -v pour voir l'invocation)

quand j'ai inséré le post_install

n'importe qui peut aider s'il vous plaît?
J'utilise hackintosh

@ Pumeo1010 , restez sur le sujet.

Sur le sujet: si ce problème est clos, quelle est la résolution? J'ai tout essayé ci-dessus et je l'ai fait fonctionner d'une manière ou d'une autre (je ne sais pas ce qui a fait le truc). Maintenant, j'ai dû reconstruire et j'ai rencontré le même problème une fois de plus et quoi que j'essaie, je ne peux plus le faire fonctionner.

Mise à jour: enfin, il fonctionne à nouveau! Je ne suis pas tout à fait sûr, mais je pense que la suppression des données dérivées de Xcode, la suppression de Podfile.lock, la suppression / la réinstallation de pods-dir, le nettoyage du dossier de construction Xcode et un redémarrage du système ont fini par faire l'affaire.

J'essaye de mettre à niveau React Native presque deux jours de 0.57.8 à 0.59.9. J'ai essayé toutes les solutions ci-dessus ce commentaire mais j'ai toujours les mêmes erreurs. Symboles en double, en-têtes non trouvés, YGFloatOptional.cpp introuvable .... J'ai créé un nouveau projet React Native, puis copié mes fichiers de projet existants dans le nouveau projet et j'ai appliqué les différences à l'aide de rn-diff-purge . Encore une fois, de cette façon, j'ai eu de nombreuses erreurs de construction différentes et j'ai finalement abandonné! J'adore la v0.57.8

Donc, après avoir suivi la mise à niveau diff vers 59.4 (en utilisant rn-diff-purge ), j'ai toujours eu les mêmes problèmes que tout le monde ici (erreur YGFloatOptional.cpp d'abord, puis l'erreur folly/Portability.h ). Cependant, aucune des solutions n'a fonctionné d'elle-même, c'est donc ce que j'ai fait pour résoudre les problèmes:

# 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

Puis mis à jour mon Podfile comme suit:

# 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

Après cela, j'ai réinstallé les pods

cd ios
pod install

Ce n'est qu'alors que le projet a recommencé à être construit avec succès

@Hless Salut. J'ai essayé votre solution. Voici mon Podfile

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

Mais cette fois, la construction échoue en raison d'une erreur de symboles en double. J'ai trouvé cette solution et maintenant elle se construit avec succès. Mais maintenant, j'ai un autre problème. Une fois que j'exécute l'application, elle se bloque immédiatement. J'ai trouvé la raison de l'erreur dans la zone de débogage de Xcode et c'est
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RCTRootView reactTag]: unrecognized selector sent to instance 0x7fbf02c05530'
la solution à ce problème est l'opposé de l'autre solution. Quelle mauvaise histoire de mise à niveau. :(

Enfin, j'ai réussi à créer un projet iOS et à l'exécuter sur un simulateur sans aucune erreur après avoir travaillé dur sur la progression de la mise à niveau. J'ai d'abord appliqué les diffs à l'aide de rn-diff-purge, puis j'ai appliqué la solution @Hless à la fin, j'ai fait face à une erreur de symboles en double et en suivant les étapes de cette solution, je les ai corrigées également maintenant que le projet fonctionne correctement.

Résolu avec ce qui suit:

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

Ensuite, j'ai réinstallé mes dépendances (npm & pod) et cela a fonctionné :)

rm -rf ~ Bibliothèque / Developer / XCode / DerivedData

la ligne de droite sera: rm -rf ~/Library/Developer/Xcode/DerivedData

Chaque fois que je rencontre un problème d'épilation avec RN qui me donne un message d'erreur absurde, je pars à la recherche de solutions désespérées. La plupart du temps, la solution consiste à supprimer le cache, supprimer les données dérivées, rouvrir Xcode, effacer les dossiers de construction, etc. Au fil des ans, j'ai mis en place ce script bash que j'ai ajouté en tant que script npm dans mon package.json. Maintenant, ma première solution goto pour la plupart des problèmes est 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. Et cela a résolu ce problème pour moi aussi: D

juste pod install a fonctionné pour moi

S'il vous plaît. rétrogradé Xcode 10.1

Un autre react-native link m'a aidé. :(

React Native n'est pas durable, 100 résolutions sont proposées pour chaque bug rencontré. Un changement et tout le processus de construction, le passe-partout et la raison d'utiliser React Native s'effondrent. Comment les entreprises peuvent-elles vraiment ajouter ce processus de développement à un pipeline de produits? ridicule!!!!

Ils disent que ce sera mieux à partir de 0,59 ... j'espère qu'ils ont raison à ce sujet

@philipaarseth J'espère que vous avez mangé vos mots quand 0.60 est sorti 😆

J'ai déjà vu cela dans d'autres threads, mais l'exécution de ce qui suit a résolu le problème pour moi:

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

Je pensais que cela avait été corrigé dans la version 0.59 ou avant et je me souviens de l'avoir vu s'exécuter automatiquement dans certaines versions, mais il semble qu'il y ait encore des cas où il manque.

Cela vaut vraiment la peine d'être inclus dans la section de dépannage de votre projet, car ce n'est pas la première fois que je vois cela se produire.

Exécutez cette commande: $ conda disable

@jpudysz merci, cela fonctionne pour moi. mais pourquoi rn yoga build error a des relationshop avec folly / glog / doubleConversion?

mon journal d'erreurs est:
Les commandes suivantes ont généré des problèmes avec l'analyseur:
Analysez /Users/superqa/jenkins/workspace/xxxxx-xxxx-iOS-new/node_modules/react-native/ReactCommon/yoga/yoga/Yoga.cpp normal arm64
Analyze Base / RCTModuleMethod.mm bras normal64
(2 commandes avec des problèmes d'analyseur)

Android fonctionne vraiment parfaitement, juste iOS ... :-(

Le seul travail prometteur pourrait être la rétrogradation de la version RN malheureusement

Cela devient assez difficile avec de nombreuses dépendances tierces.

dans mon cas, Xcode vient de faire une mise à jour automatique et a produit un tel problème.
ce que j'ai fait pour résoudre le problème était:
cd ios
rm -fr Pods
rm Podfile.lock
installation du pod

réinstaller les pods et Podfile a résolu mon problème

Supprimer les données dérivées
cd ios
supprimer les pods et Podfile.lock
installation du pod

J'ai fait toutes les étapes ci-dessus, j'ai fait fonctionner la construction et maintenant j'obtiens cette erreur. FWIW Je mets à niveau de Xcode 10.1 -> 11.1 ET je mets à niveau React native de 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: J'ai supprimé RCTTest du podfile et c'était bien après ça.

Je voyais également l'erreur #include <folly/Portability.h> . Le problème dans mon cas était l'absence de sous-spécifications dans le fichier pod.

Cela me convient parfaitement avec:

  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'

J'ai eu un problème pour installer glog, j'ai fini par avoir à émettre cette commande sudo xcode-select --switch /Applications/Xcode.app/ assez sûr parce que j'exécutais Xcode à partir d'un répertoire différent, puis je l'ai déplacé dans mon répertoire / Applications, et l'outillage était tout foiré .

@jenskuhrjorgensen votre commande rm supprime tout $ TMPDIR à cause d'un espace que vous avez dedans.

@ jduffy7 C'est probablement un peu exagéré 😄 Thx, ça a été corrigé!

@jenskuhrjorgensen Merci !!!!!

Lancer pod update fonctionné pour moi.

Toute mise à jour .. ?

Les solutions ci-dessus n'ont pas fonctionné, ce qui suit a aidé mon projet à se reconstruire.

cd ios
pod repo update
pod update

Après avoir exécuté ces commandes, j'ai pu construire sur xcode mais sans utiliser react-native run-ios . J'ai ensuite exécuté ces commandes (merci 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

ce qui m'a aidé à construire à nouveau en utilisant react-native run-ios .

@khanguslee je le fais mais malheureusement ça ne va pas se construire

et j'ai cette erreur

* ÉCHEC DE CONSTRUCTION *

Les commandes de construction suivantes ont échoué:
PhaseScriptExecution [CP] Vérifiez les pods Manifest.lock /../ios/build/music/Build/Intermediates.noindex/music.build/Debug-iphonesimulator/music.build/Script-C5D676D55145145333E00AC9.sh
(1 échec)

Affichage de tous les messages
: -1: Le bac à sable n'est pas synchronisé avec le Podfile.lock. Exécutez 'pod install' ou mettez à jour votre installation CocoaPods.

Le bac à sable n'est pas synchronisé avec le Podfile.lock. Exécutez 'pod install' ou mettez à jour votre installation CocoaPods.

Une recherche rapide sur Google avec votre message d'erreur me donne une solution ici.

Cette page vous a été utile?
0 / 5 - 0 notes