React-native: Nach dem Upgrade auf React-Native 0.59 schlägt der iOS-Build fehl

Erstellt am 13. März 2019  ·  69Kommentare  ·  Quelle: facebook/react-native

🐛 Fehlerbericht

Nach dem Update auf React-Native 0.59 und dem Versuch, die App für iOS zu erstellen, wird folgende Fehlermeldung angezeigt:

Die Build-Eingabedatei wurde nicht gefunden: '/app/node_modules/react-native/ReactCommon/yoga/yoga/YGFloatOptional.cpp'

Was mir seltsam ist, ist, dass ich diese Datei auch hier im aktuellen Master nicht finden kann: react-native/tree/master/ReactCommon/yoga/yoga (nur YGFloatOptional.h )

Reproduzieren

Wir haben ein mittelgroßes Projekt von 0,57,7 → 0,59 aktualisiert.

Erwartetes Verhalten

Build sollte genauso gut laufen wie vorher.

Umgebung

  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

Hilfreichster Kommentar

Ich habe das gleiche Problem ... Jedes Mal, wenn es ein Problem mit Upgrades gibt, reagieren native so müde.

Alle 69 Kommentare

Ich habe dieses Problem gerade mit XCode: 10.1 und RN 0.59.0 reproduziert.

EDIT 1 : Ich konnte mit dem XCode UI Build Tool reproduzieren. aber es funktioniert gut mit react-native run-ios (stellen Sie sicher, dass Sie die neueste 2.x-CLI haben).
EDIT 2 : Ich habe es geschafft, es mit XCode 10.1 zum Laufen zu bringen, indem ich

Hmm, ich habe gerade ein Upgrade von 0.58.4 auf 0.59 , Build-Verzeichnisse in XCode bereinigt und konnte die App sowohl debuggen als auch archivieren. Ich benutze XCode 10.1.
Meine Upgrade-Strategie:

  1. Bump-Abhängigkeiten gemäß der neuesten stabilen Version.
  2. Gehen Sie jeden Vergleich unter https://github.com/react-native-community/rn-diff-purge durch und wenden Sie ihn manuell an.

Sie fragen sich, ob alles für mich funktionieren könnte, weil ich 0.58.4 und nur neue Dinge darauf angewendet habe?

BEARBEITEN: Ich habe auch npm ci , um meine node_modules zu entfernen (nur um sicherzugehen), und ich konnte die App immer noch aus XCode 🤔 erstellen

EDIT2: Und ich habe keine YGFloatOptional.cpp :
Screen Shot 2019-03-13 at 12 55 51

Ich bekomme das gleiche Problem beim Upgrade von 0.57.8 -> 0.59.1.
Bei einem neuen 0,59.1-Init gibt es keine YGFloatOptional.cpp -Datei.

Fügen Sie Ihrem Podfile diese Zeilen hinzu:

  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'

und Renn

pod install

@jpudysz Ja, das hat funktioniert, nachdem auf Cocoapod migriert und das XCode-Projekt mit der Datei .xcworkspace geöffnet wurde .
Ich musste react-native unlink und react-native link überbrückte Bibliotheken, damit sie stattdessen die Podfile verwenden.

Sollte eine ältere Verknüpfung (ohne Cocoapod) veraltet sein?

@jpudysz Hat auch für mich gearbeitet. Sicherlich kann dies nicht die richtige Lösung sein, oder? Dies bläht das Projekt ernsthaft auf. Pods/boost-for-react-native ist 160,8 MB groß.

Edit: Ok ernsthaft seltsam, ich habe diese 3 Pods entfernt, Clean in Xcode ausgeführt und versucht zu bauen. Diesmal habe ich beim Kompilieren von Yoga keinen Fehler bekommen.

Danke @jpudysz . Nach Ihrer Lösung erhalte ich dann den folgenden Fehler:
Die Datei 'folly / Portability.h' wurde in JSBundleType.h nicht gefunden

Weiß jemand was los ist?

Danke vielmals.

Nachdem ich versucht hatte, wie sich so ziemlich alles anfühlt, RN-Standard-Upgrade, Git-Upgrade-Tool, Diff-Patch anzuwenden, erstellte ich ein völlig neues Projekt und erledigte die äußerst mühsame Arbeit, die Codebasis neu aufzubauen. Sie sagen, dass es ab 0,59 besser sein wird. Hoffentlich haben sie damit Recht

Ich habe gerade ein Upgrade von 0.59.0 auf 0.59.1 durchgeführt und es hat bei mir funktioniert
Das Yoga-Problem wurde behoben

Ich habe auch ein Upgrade durchgeführt, aber bisher ohne Glück.

Ich hatte genau das gleiche Problem. Das gute alte rm -rf node_modules && npm i und das Bereinigen der Build-Ordner haben es für mich getan

Nachdem ich npm audit fix , werden meine 'React-Native' automatisch auf Version 0.59 aktualisiert und ich kann mein Projekt nicht erstellen.
Lösung : Downgrade der Version auf eine niedrigere.
npm install react-native@<version>
Beispiel: npm install [email protected]

Ich habe versucht, manuell von 0.58.4 zu aktualisieren (nach Änderungen von rn-diff-purge), aber ich habe auch dieses Problem mit RN 0.59.0 oder 0.59.1

Ja, wir hatten YGFloatOptional.cpp bis 0,58 https://github.com/facebook/react-native/blob/0.58-stable/ReactCommon/yoga/yoga/YGFloatOptional.cpp

Was zum Teufel ist hier los?

Bearbeiten
Die Lösung von @jpudysz führt mich zu einer anderen Datei, bei der der Fehler 'folly/Portability.h' file not found nicht gefunden wurde

Ich habe das gleiche Problem mit 'folly / Portability.h' nach dem Upgrade von 0.58.4 auf 0.59.0 und 0.59.1

Was seltsam ist, ist, dass XCode nach dem Kompilieren angibt, dass Portability.h nicht gefunden wird, aber im Editor werden alle Typen im Header definiert ...

image

Die Datei, die nicht kompiliert werden kann, ist RCTJavasScriptLoader.mm in der React-Bibliothek.


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.

Ich habe das gleiche Problem ... Jedes Mal, wenn es ein Problem mit Upgrades gibt, reagieren native so müde.

Die Datei scheint seit dem 13. Dezember 2018 aus dem Yoga-Projekt gelöscht und in yoga/YGFloatOptional.h "eingefügt" worden zu sein: https://github.com/facebook/yoga/commit/96d93f29826257ff6e9bb6c19211adb423029c29

Ich vermute, der Verweis auf ReactCommon/yoga/yoga/YGFloatOptional.cpp wird nicht mehr benötigt.

Das Entfernen des Caches und das Neuerstellen des Projekts haben bei mir nicht sofort funktioniert.

Also habe ich versucht, ein Upgrade auf React Native 0.59.1 durchzuführen und dann das Projekt neu zu erstellen. Hat auch nicht funktioniert.

DANN funktionierte es jedoch, meine node_modules zu bereinigen, Ordner zwischenzuspeichern und zu erstellen und das Projekt neu zu erstellen.

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

Es scheint also mit dem Cache zu tun zu haben.

Ein Upgrade auf React Native 0.59.1 ist möglicherweise nicht erforderlich. Ich denke, ein Teil des Skripts hat den Trick für mich getan.

Hoffe das hilft anderen!

Ich habe aufgegeben, ich habe alle Links zu node_modules aus der Pods-Datei gelöscht, dann node_modules gelöscht und das Verzeichnis erstellt und alles neu installiert, um es dann wieder erfolgreich zu erstellen.

Das ist so anstrengend.

@jvandenaardweg Ich denke, Sie haben Recht, dass es sich um ein Caching-Problem handelt.

Für mich funktionierte es, den abgeleiteten Datenordner meines Xcodes zu löschen und Xcode neu zu starten.
rm -rf ~/Library/Developer/Xcode/DerivedData

Nach dem Neustart habe ich versucht, einen Build zu erstellen, der fehlgeschlagen ist, und mich aufgefordert, meinen xcode-Arbeitsbereich zu schließen und erneut zu öffnen. Nachdem ich das getan hatte, versuchte ich erneut zu bauen und es funktionierte.

Okay Leute, ich denke, bei diesem Problem geht es im Allgemeinen um Build-Cache-Probleme beim Upgrade (beim Lesen der Beiträge). Wenn Sie also Probleme haben, kann es im Allgemeinen behoben werden durch:

  • Bereinigte Daten in Xcode bereinigen
  • rm -rf node_modules; rm -rf Pods dann neu installieren
  • Verwenden von react-native upgrade x.y.z

Ich wette, das ist für jede Version ziemlich gleich. Ich würde vielleicht versuchen, ein Problem mit dem React-Native-Cli zu machen, um dies zu verbessern und vielleicht einige der Befehle selbst auszuführen.

Hat jemand einen bestimmten Reproduktionsschritt dafür?

Ich habe auch den Fehler #include <folly/Portability.h> . In meinem Fall fehlten Unterspezifikationen in der Poddatei.

Es baut sich gut für mich auf mit:

  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'

"Zwischen den reaktionsnativen Werten 0,57,8 und 0,58,5 wurde im Xcode-Projekt eine große Änderung hinzugefügt: Sie müssen JavaScriptCore.Framework zu den verknüpften FrameWorks und Bibliotheken hinzufügen" - von hier aus

PLUS

@ jvandenaardweg Antwort:

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

Hat die Arbeit für mich gemacht.

Es ist wirklich frustrierend, wie andere gesagt haben, zu raten, was einen Code bricht, der vorher funktioniert hat.

Auch auf Android musste ich die Build Gradle-Version aktualisieren, um wieder zu funktionieren.

raten müssen

Wir wissen, dass das Upgrade für die Community ein neue CLI eingeführt .

Das heißt, wir haben die wichtigsten Änderungen im Änderungsprotokoll und auf der Registerkarte "Releases" geschrieben, sodass keine wirklichen Vermutungen erforderlich sind.

Das Schließen ist jedoch eindeutig mit dem Upgrade verbunden. Außerdem können Sie im Allgemeinen rn-diff-repo verwenden , um beim Upgrade alle erforderlichen Schritte zu überprüfen.

Hallo,

Nach vielem Graben habe ich es geschafft herauszufinden, warum ich das Problem habe. Das Bereinigen des Caches und alles hat das Problem für mich nicht behoben und ich hatte immer noch das #include.

Es wurde für das React-Projekt unter meinem Projekt gut kompiliert, aber für die Pods, die ich habe, konnte es nicht kompiliert werden.

Selbst nach dem Hinzufügen der Folly / Glog / DoubleConversion-Pods hatte ich immer noch das Problem.

Ich habe dann die Datei React.podspecs geändert, um die Core-Unterspezifikation zu bearbeiten

Nachdem der Folly-Verweis zur pod_target_xcconfig hinzugefügt wurde, wurde er ohne weitere Probleme kompiliert.

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

Und hier ist die vollständige Poddatei, die ich habe

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

Ich bin in der gleichen Situation. Ich habe nach der Reaktion auf native Diff von 0,57 auf 0,59 aktualisiert und alles hat perfekt funktioniert, bis ich 0,58,6 auf 0,59 aktualisiert habe.

Ich habe alles in diesem Thread ohne Glück versucht, die 'folly / Portability.h'-Datei nicht gefunden Fehler will einfach nicht verschwinden.

Das Zurücksetzen auf 0,58,6 funktioniert einwandfrei, aber sobald ich auf 0,59,0 oder 0,59,1 aktualisiere, wird der Fehler angezeigt.

Bearbeiten: Ich habe die Datei in node_modules / react-native / Drittanbieter / folly-2018.10.22.00 / folly / Portability.h gefunden, aber es heißt immer noch, dass sie nicht vorhanden ist.

Mir ist klar, dass mein Beitrag sehr unklar war ... Tut mir leid. Hier ist die Diff-Datei, die es für Leute, die Probleme mit 'folly / Portability.h' haben, expliziter machen soll.

Versuchen Sie, die folgende Änderung an der Datei node_modules / react-native / React.podspec vorzunehmen, zumindest in meinem Fall hat es funktioniert! Ich kann jetzt mein Projekt kompilieren und ohne Probleme starten.

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

Tun, was @aaska gesagt hat und hinzufügen
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'

Das Podfile und die Pod-Installation haben bei mir funktioniert.

Nachdem ich die Tipps von @jpudysz , @jvandenaardweg und @johnryan verwendet habe, wird es auch für mich erstellt.
Danke Leute!

@ th3ac3 das hat das Problem für mich gelöst. Vielen Dank!

keiner von ihnen funktionierte

@jvandenaardweg Ich denke, Sie haben Recht, dass es sich um ein Caching-Problem handelt.

Für mich funktionierte es, den abgeleiteten Datenordner meines Xcodes zu löschen und Xcode neu zu starten.
rm -rf ~/Library/Developer/Xcode/DerivedData

Nach dem Neustart habe ich versucht, einen Build zu erstellen, der fehlgeschlagen ist, und mich aufgefordert, meinen xcode-Arbeitsbereich zu schließen und erneut zu öffnen. Nachdem ich das getan hatte, versuchte ich erneut zu bauen und es funktionierte.

Danke, ich habe das gemacht und es hat wieder funktioniert.

Nachdem ich dem Upgrade diff auf 59.4 gefolgt war (mit rn-diff-purge ), hatte ich immer noch die gleichen Probleme wie alle anderen hier (zuerst YGFloatOptional.cpp Fehler und dann folly/Portability.h Fehler). Da jedoch keine der Lösungen von selbst funktionierte, habe ich Folgendes getan, um die Probleme zu lösen:

# 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

Dann habe ich mein Podfile auf folgendes aktualisiert:

# 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

Danach habe ich die Pods neu installiert

cd ios
pod install

Erst dann begann das Projekt wieder erfolgreich zu bauen

In meinem Fall habe ich nur vergessen, den Schritt zu tun:

Wenn Sie ein iOS-Entwickler sind, müssen Sie JavaScriptCore.framework beim Upgrade manuell verknüpfen. Dies kann über Xcode erfolgen und die hier gezeigten Schritte ausführen.

Beispiel

nachdem ich das getan habe, kompiliert xcode einfach ok

Keines der oben genannten hat bei mir funktioniert

Überprüfen Sie dies: https://github.com/facebook/react-native/issues/18408#issuecomment -386696744
es hat das Problem für mich gelöst.

lege dies in die Konsole -> xcrun -k --sdk iphoneos --show-sdk-path
wenn die Antwort ist
xcrun: _ error: SDK "iphoneos" kann nicht gefunden werden
xcrun: Fehler: SDK "iphoneos" kann nicht gefunden werden
xcrun: Fehler: Element 'Pfad' im SDK 'iphoneos' kann nicht gesucht werden.

Setzen Sie dann diesen sudo xcode-select --switch /Applications/Xcode.app

Installieren Sie dann den Pod erneut

Diese Antwort hat bei mir funktioniert. Zusätzlich zu den oben in diesem Thread erwähnten Dingen musste ich das Terminal, das mein Metro-Bundler ausführte, erneut öffnen.

Downgrade auf "react-native": "0.57.4", als es wieder funktioniert

Downgrade auf "react-native": "0.57.4", als es wieder funktioniert

Ich denke nicht, dass ein Downgrade auf diese Version der beste Weg ist, @miukki. Diese Version (0.59) bietet 64-Bit-Unterstützung für Android-Apps, die Sie als zukünftige Voraussetzung für die Veröffentlichung von Apps benötigen (Informationen hier ).

Hey, nachdem ich mich allen oben genannten Lösungen genähert habe, habe ich einen weiteren Fehler festgestellt

ld: Warnung: Verzeichnis für Option '-F / Users / pumeo / Library / Developer / Xcode / DerivedData / GreenPlanet-cekcooliietupofcqlsnkupeolal / Build / Products / Debug-iphonesimulator / React' nicht gefunden.
ld: Framework nicht gefunden Reagieren
clang: error: Linker-Befehl mit Exit-Code 1 fehlgeschlagen (benutze -v, um den Aufruf zu sehen)

als ich die post_install eingefügt habe

kann jemand bitte helfen?
Ich benutze Hackintosh

@ Pumeo1010 , bitte bleiben Sie beim Thema.

Zum Thema: Wenn dieses Problem geschlossen ist, wie lautet die Lösung? Ich habe alles oben ausprobiert und es irgendwie zum Laufen gebracht (ich weiß nicht, was den Trick gemacht hat). Jetzt musste ich neu bauen und stieß erneut auf dasselbe Problem, und was auch immer ich versuche, kann es nicht mehr zum Laufen bringen.

Update: endlich wieder funktioniert! Ich bin mir nicht ganz sicher, aber ich denke, das Entfernen der von Xcode abgeleiteten Daten, das Entfernen von Podfile.lock, das Entfernen / Neuinstallieren des Pods-Verzeichnisses, das Bereinigen des Xcode-Build-Ordners und ein Neustart des Systems haben den Trick getan.

Ich versuche, React Native fast zwei Tage von 0,57,8 auf 0,59,9 zu aktualisieren. Ich habe alle Lösungen über diesem Kommentar ausprobiert, aber immer noch die gleichen Fehler erhalten. Doppelte Symbole, Header nicht gefunden, YGFloatOptional.cpp nicht gefunden .... Ich habe ein neues React Native-Projekt erstellt und dann meine vorhandenen Projektdateien in das neue Projekt kopiert und die Unterschiede mit Hilfe von rn-diff-purge angewendet. Auch auf diese Weise bekam ich viele verschiedene Build-Fehler und schließlich gab ich auf! Ich liebe v0.57.8

Nachdem ich dem Upgrade diff auf 59.4 gefolgt war (mit rn-diff-purge ), hatte ich immer noch die gleichen Probleme wie alle anderen hier (zuerst YGFloatOptional.cpp Fehler und dann folly/Portability.h Fehler). Da jedoch keine der Lösungen von selbst funktionierte, habe ich Folgendes getan, um die Probleme zu lösen:

# 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

Dann habe ich mein Podfile auf folgendes aktualisiert:

# 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

Danach habe ich die Pods neu installiert

cd ios
pod install

Erst dann begann das Projekt wieder erfolgreich zu bauen

@Hless Hi. Ich habe deine Lösung ausprobiert. Hier ist mein 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

Diesmal schlägt die Erstellung jedoch aufgrund eines Fehlers bei doppelten Symbolen fehl. Ich habe diese Lösung gefunden und jetzt wird sie erfolgreich erstellt. Aber jetzt habe ich ein anderes Problem. Sobald ich die Anwendung ausgeführt habe, stürzt sie sofort ab. Ich habe den Fehlergrund im Debug-Bereich von Xcode gefunden und es ist
Terminating app due to uncaught exception 'NSInvalidArgumentException', reason: '-[RCTRootView reactTag]: unrecognized selector sent to instance 0x7fbf02c05530'
Die Lösung für dieses Problem ist das Gegenteil der anderen Lösung. Was für eine schlechte Upgrade-Geschichte. :(

Schließlich habe ich erfolgreich ein iOS-Projekt erstellt und es ohne Fehler auf dem Simulator ausgeführt, nachdem ich intensiv am Fortschritt des Upgrades gearbeitet habe. Zuerst habe ich diffs mit Hilfe von rn-diff-purge angewendet, dann habe ich @Hless 'Lösung angewendet, am Ende habe ich einen Fehler mit doppelten Symbolen Befolgen der Schritte auf dieser Lösung habe ich sie behoben, auch jetzt funktioniert das Projekt korrekt.

Gelöst mit folgendem:

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

Dann habe ich meine Abhängigkeiten (npm & pod) neu installiert und es hat funktioniert :)

rm -rf ~ Bibliothek / Entwickler / XCode / DerivedData

Die rechte Zeile lautet: rm -rf ~/Library/Developer/Xcode/DerivedData

Jedes Mal, wenn ich auf ein Problem mit RN stoße, das mir eine unsinnige Fehlermeldung gibt, mache ich mich auf die verzweifelte Suche nach Lösungen. Meistens besteht die Lösung darin, den Cache zu löschen, abgeleitete Daten zu löschen, Xcode erneut zu öffnen, Build-Ordner zu löschen usw. Im Laufe der Jahre habe ich dieses Bash-Skript zusammengestellt, das ich als npm-Skript in meiner package.json hinzugefügt habe. Jetzt ist meine erste Lösung für die meisten Probleme 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. Und es hat dieses Problem auch für mich gelöst: D.

Nur pod install hat bei mir funktioniert

Bitte. Xcode 10.1 herabgestuft

Ein weiteres react-native link hat mir geholfen. :(

React Native ist nicht nachhaltig. Für jeden Fehler, auf den jemand stößt, werden 100 Auflösungen angeboten. Eine Änderung und der gesamte Erstellungsprozess, das Boilerplate und der Grund für die Verwendung von React Native fallen auseinander. Wie können Unternehmen diesen Entwicklungsprozess wirklich zu einer Produktpipeline hinzufügen? lächerlich!!!!

Sie sagen, dass es ab 0,59 besser sein wird. Hoffentlich haben sie damit Recht

@philipaarseth Ich hoffe, Sie haben Ihre Worte gegessen, als 0,60 herauskam 😆

Ich habe dies bereits in anderen Threads gesehen, aber das Ausführen von Folgendem hat das Problem für mich gelöst:

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

Ich dachte, dies wurde in 0.59 oder früher behoben und ich erinnere mich, dass es in einigen Builds automatisch ausgeführt wurde, aber es scheint immer noch Fälle zu geben, in denen es fehlt.

Es lohnt sich auf jeden Fall, in den Abschnitt zur Fehlerbehebung Ihres Projekts aufzunehmen, da dies nicht das erste Mal ist, dass ich dies sehe.

Führen Sie diesen Befehl aus: $ conda disable

@jpudysz danke, es funktioniert bei mir. aber warum rn Yoga Build Fehler haben Beziehung zu Torheit / Glog / DoubleConversion?

Mein Fehlerprotokoll lautet:
Die folgenden Befehle führten zu Problemen mit dem Analysator:
Analysieren Sie /Users/superqa/jenkins/workspace/xxxxx-xxxx-iOS-new/node_modules/react-native/ReactCommon/yoga/yoga/Yoga.cpp normal arm64
Analysieren Sie Base / RCTModuleMethod.mm normal arm64
(2 Befehle mit Analysatorproblemen)

Android funktioniert wirklich perfekt, nur iOS ... :-(

Die einzige vielversprechende Lösung könnte leider ein Downgrade der RN-Version sein

Es wird ziemlich schwierig, wenn viele Abhängigkeiten von Drittanbietern bestehen.

In meinem Fall hat Xcode gerade ein automatisches Update durchgeführt und ein solches Problem verursacht.
Was ich getan habe, um das Problem zu lösen, war:
cd ios
rm -fr Pods
rm Podfile.lock
Pod installieren

Neuinstallation der Pods und Podfile haben mein Problem gelöst

Abgeleitete Daten löschen
cd ios
Pods und Podfile.lock entfernen
Pod installieren

Ich habe alle oben genannten Schritte ausgeführt, den Build zum Laufen gebracht und jetzt wird dieser Fehler angezeigt. FWIW Ich aktualisiere von Xcode 10.1 -> 11.1 UND ich aktualisiere die native Reaktion von 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: Ich habe RCTTest aus der Poddatei entfernt und es war danach gut.

Ich habe auch den Fehler #include <folly/Portability.h> . In meinem Fall fehlten Unterspezifikationen in der Poddatei.

Es baut sich gut für mich auf mit:

  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'

Ich hatte ein Problem mit der Installation von Glog und musste diesen Befehl sudo xcode-select --switch /Applications/Xcode.app/ ziemlich sicher ausgeben, da ich Xcode aus einem anderen Verzeichnis ausgeführt und dann in mein Verzeichnis / Applications verschoben habe und das Tooling völlig durcheinander war .

@jenskuhrjorgensen Ihr rm entfernt das gesamte $ TMPDIR, da dort ein Leerzeichen vorhanden ist.

@ jduffy7 Das ist wahrscheinlich ein bisschen übertrieben 😄 Danke, es wurde korrigiert!

@jenskuhrjorgensen Danke !!!!!

Das Ausführen von pod update hat bei mir funktioniert.

Irgendein Update .. ?

Die oben genannten Lösungen haben nicht funktioniert. Die folgenden Lösungen haben meinem Projekt geholfen, wieder aufzubauen.

cd ios
pod repo update
pod update

Nachdem ich diese Befehle ausgeführt hatte, konnte ich auf xcode aufbauen, aber nicht react-native run-ios . Ich habe dann diese Befehle ausgeführt (danke 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

Das hat mir geholfen, wieder mit react-native run-ios zu bauen.

@hanguslee Ich mache es, aber leider wird es nicht gebaut

und habe diesen Fehler bekommen

* BAU FEHLGESCHLAGEN *

Die folgenden Build-Befehle sind fehlgeschlagen:
PhaseScriptExecution [CP] Pods prüfen Manifest.lock /../ios/build/music/Build/Intermediates.noindex/music.build/Debug-iphonesimulator/music.build/Script-C5D676D55145145333E00AC9.sh
(1 Fehler)

Alle Nachrichten anzeigen
: -1: Die Sandbox ist nicht mit Podfile.lock synchronisiert. Führen Sie "pod install" aus oder aktualisieren Sie Ihre CocoaPods-Installation.

Die Sandbox ist nicht mit Podfile.lock synchronisiert. Führen Sie "pod install" aus oder aktualisieren Sie Ihre CocoaPods-Installation.

Eine schnelle Google-Suche mit Ihrer Fehlermeldung gibt mir hier eine Lösung .

War diese Seite hilfreich?
0 / 5 - 0 Bewertungen