React Native-npx React Native运行ios不';初始化项目后无法工作

React Native-npx React Native运行ios不';初始化项目后无法工作,ios,reactjs,xcode,react-native,Ios,Reactjs,Xcode,React Native,阅读之后,我使用npx react native init***创建了一个react native项目 这是成功的,因此,我尝试使用npx react native run ios运行项目,并得到以下错误: ** BUILD FAILED ** The following build commands failed: CompileC /Users/loser/Library/Developer/Xcode/DerivedData/test0205-dasunahpjpavelgms

阅读之后,我使用
npx react native init***
创建了一个react native项目

这是成功的,因此,我尝试使用
npx react native run ios
运行项目,并得到以下错误:

** BUILD FAILED **


The following build commands failed:
    CompileC /Users/loser/Library/Developer/Xcode/DerivedData/test0205-dasunahpjpavelgmslwgmvjhesxy/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Flipper.build/Objects-normal/x86_64/FlipperRSocketResponder.o /Users/loser/Documents/projects/test0205/ios/Pods/Flipper/xplat/Flipper/FlipperRSocketResponder.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)

从mmemories开始,必须先执行
pod install
命令

这似乎是react native 0.63中的一个问题,请尝试使用--0.62版启动项目,它应该会一直工作,直到他们修复错误为止

这是因为iOS项目的Podfile中使用了
flipper

use_flipper!
因此,我需要指出
Flipper Folly
版本,并使用Flipper作为

use_flipper!({ 'Flipper-Folly' => '2.3.0' })
更改后,它工作得非常好。

React版本-0。63 在Mac上启动iOS新项目时,我仍然面临同样的问题。我遵循了下面给出的这些步骤,但仍然解决了这个问题

npx react-native init xxxx
cd xxxx
npx react-native run-ios
pod install
在这样做之后,我得到了以下错误

** BUILD FAILED **

The following build commands failed:
        CompileC /Users/apple/Library/Developer/Xcode/DerivedData/profirst-bbfobfkgbfqalecezvbonnkwcffv/Build/Intermediates.noindex/Pods.build/Debug-iphonesimulator/Flipper.build/Objects-normal/x86_64/FlipperRSocketResponder.o /Users/apple/profirst/ios/Pods/Flipper/xplat/Flipper/FlipperRSocketResponder.cpp normal x86_64 c++ com.apple.compilers.llvm.clang.1_0.compiler
(1 failure)
后来我在pod文件中进行了更改
使用翻转器
使用翻转器!({'Flipper Folly'=>'2.3.0'})
,但我仍然有同样的问题


以下是珠穆朗玛峰攀登者回答问题的截图

  • 在ios/文件夹下的Podfile中更改使用\u flipper!用脚蹼!({'Flipper Folly'=>'2.3.0'})

  • 光盘ios
  • 吊舱安装
  • 吊舱更新
  • 光盘&&npx react本机运行ios(运行应用程序)
  • 这对我有用。希望它对你也有用

  • 在ios/Podfile中替换–
    使用翻转器
    使用翻转器!({'Flipper Folly'=>'2.3.0'})
  • 排除ios/Podfile.lock
  • pod安装

  • 在ios/Podfile中禁用Flipper后,我可以解决这个问题

  • 修复Podfile,如下图所示
  • 光盘ios
  • 删除Pods文件夹和Podfile.lock
  • 吊舱安装
  • 吊舱更新
  • 光盘&&npx反应本机运行ios

  • 对我来说,从Podfile中禁用flipper很有效

    更新的pod文件

    require_relative '../node_modules/react-native/scripts/react_native_pods'
    require_relative '../node_modules/@react-native-community/cli-platform-ios/native_modules'
    
    platform :ios, '10.0'
    
    target 'ReactNativeApp' do
      config = use_native_modules!
    
      use_react_native!(:path => config["reactNativePath"])
    
      target 'ReactNativeAppTests' do
        inherit! :complete
        # Pods for testing
      end
    
      # Enables Flipper.
      #
      # Note that if you have use_frameworks! enabled, Flipper will not work and
      # you should disable these next few lines.
      # use_flipper!({ 'Flipper-Folly' => '2.3.0' })
      # post_install do |installer|
        # flipper_post_install(installer)
      # end
    end
    
    target 'ReactNativeApp-tvOS' do
      # Pods for ReactNativeApp-tvOS
    
      target 'ReactNativeApp-tvOSTests' do
        inherit! :search_paths
        # Pods for testing
      end
    end
    
    • cd-ios&&pod安装
    • cd.&&npx react本机运行ios

    • 是的,珠穆朗玛峰攀登者是对的。在我更新react native CLI后,它已损坏。这是因为使用flipper新版本

      修复此问题的步骤:

      > Open Podfile for the iOS project.
      > Replace `use_flipper!` with `use_flipper!({ 'Flipper-Folly' => '2.3.0' })`.
      > Then you must remove both Pods directory and Podfile.lock.
      > open terminal and go to iOS project directory.
      > Do `pod install`.
      
      它对我非常有效。

      如何修复: 这是因为在最新的Catalina版本中,Flipper的愚蠢行为被破坏了。
      在修复之前,你最好的办法是强制你的cocoapod升级到最新的工作版本(2.3.0)

    • 转到项目文件夹根目录并打开
      /ios
      目录

      cd ios
      
    • 打开您的
      pod文件
      ,并更改以下代码块:

      use_flipper!
      

    • /ios
      目录中运行以下命令:

      pod install
      
    • 如果成功,请返回项目根目录并尝试运行该项目

      cd ..
      npx react-native run-ios
      
      如果没有,请检查兼容性故障排除部分:

    • 兼容性故障排除 尝试运行
      pod install
      后,您可能会遇到与此类似的错误:

      [!] CocoaPods could not find compatible versions for pod "Flipper-Folly":
        In Podfile:
          Flipper-Folly (= 2.3.0)
      
          Flipper-RSocket (~> 1.1) was resolved to 1.3.0, which depends on
            Flipper-Folly (~> 2.5)
      
          FlipperKit/FBCxxFollyDynamicConvert (~> 0.54.0) was resolved to 0.54.0,
            which depends on
            Flipper-Folly (~> 2.2)
      
      为了解决这个问题,

    • 返回您的
      /ios
      文件夹

      cd ios
      
    • 然后删除
      Podfile.lock
      文件

      rm -rf Podfile.lock
      
    • 再次安装吊舱

      pod install
      
    • 然后运行react native

      cd ..
      npx react-native run-ios
      

    • 如果没有任何效果,请对其进行评论

      # use_flipper!({ 'Flipper-Folly' => '2.5.1' })
      

      我在这里什么都试过了,而且试了很多,但都没用

      然后我:

      • 删除了我的node_模块(我唯一没有做的事情)
      • 已删除Pods文件夹和Podfile.lock
      • 然后安装npm(使用
        ——我的传统对等DEP
      • npx吊舱安装
        (或cd ios/,吊舱安装)
      • npx react本机运行ios
      它终于成功了


      显然,删除节点模块起了作用,但不要问我为什么。

      这个问题是由flipper folly pod规范更新引起的

      删除/卸载react native cli,只需使用npx即可

      在react native 0.63.4(以前的稳定版本)上尝试此操作

      记住,它不适用于最新的0.64.0和XCode 12.5

      在ios/Podfile内部替换使用翻转器!与:

      用脚蹼!({'Flipper Folly'=>'2.5.3','Flipper'=>'0.87.0','Flipper-RSocket'=>'1.3.1'})

      pod安装--repo更新

      npx反应本机运行ios

      如果您不需要使用flipper或仍然遇到一些问题,请尝试在podfile中注释flipper并使用命令安装pods

      pod安装--repo更新


      我在github上找到了如此完美和全面的答案(2021年5月5日)

      (旁注:确保您使用的是cocoapods 1.10.x)

      如果你在0.62
    • 将此行添加到您的podfile中(如果您已有此行,请对其进行修改):
    • 将您的package.json本机依赖项更改为
    • 执行所有经典的必要清理(节点、模块、缓存、pod文件夹等)(react native clean project是您的盟友),然后执行
      纱线安装和
      pod安装--repo update
      (如果pod安装因Flipper包出错而失败,只需从podfile.lock中删除相关行并再次运行pod安装)
    • 如果你在0.63 如果你在0.63,你就很幸运了!您只需要将这一行添加到您的podfile中(或者如果您已经有了它,则修改它):

      然后正确地清理缓存(react native clean project是您的盟友),删除pods文件夹并执行
      pod安装--repo更新

      这应该足以让Xcode 12.5正常工作

      如果你在0.64上
    • (可选)检查podfile.lock并确保Flipper的值为0.75或更高,Flipper Folly的值为2.5.3或更高;如果没有,请将这一行添加到您的podfile中(如果您已经有了它,请修改它):
    • 将您的package.json本机依赖项更改为:
    • 执行所有经典的必要清理(节点\单元模块、缓存、pod文件夹等)(react native clean项目是您的
      # use_flipper!({ 'Flipper-Folly' => '2.5.1' })
      
      #use_flipper!()
        #post_install do |installer|
          #flipper_post_install(installer)
        #end
      
      use_flipper!('Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1')
      
      "react-native": "0.62.3"
      
      use_flipper!('Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1')
      
      use_flipper!('Flipper' => '0.75.1', 'Flipper-Folly' => '2.5.3', 'Flipper-RSocket' => '1.3.1')
      
      "react-native": "0.64.1"
      
        # add_flipper_pods!
        # post_install do |installer|
        #   flipper_post_install(installer)
        # end
      
      //#if DEBUG
      //#import <FlipperKit/FlipperClient.h>
      //#import <FlipperKitLayoutPlugin/FlipperKitLayoutPlugin.h>
      //#import <FlipperKitUserDefaultsPlugin/FKUserDefaultsPlugin.h>
      //#import <FlipperKitNetworkPlugin/FlipperKitNetworkPlugin.h>
      //#import <SKIOSNetworkPlugin/SKIOSNetworkAdapter.h>
      //#import <FlipperKitReactPlugin/FlipperKitReactPlugin.h>
      
      //static void InitializeFlipper(UIApplication *application) {
      //  FlipperClient *client = [FlipperClient sharedClient];
      //  SKDescriptorMapper *layoutDescriptorMapper = [[SKDescriptorMapper alloc] initWithDefaults];
      //  [client addPlugin:[[FlipperKitLayoutPlugin alloc] initWithRootNode:application withDescriptorMapper:layoutDescriptorMapper]];
      //  [client addPlugin:[[FKUserDefaultsPlugin alloc] initWithSuiteName:nil]];
      //  [client addPlugin:[FlipperKitReactPlugin new]];
      //  [client addPlugin:[[FlipperKitNetworkPlugin alloc] initWithNetworkAdapter:[SKIOSNetworkAdapter new]]];
      //  [client start];
      //}
      //#endif
      
      //  #if DEBUG
      //  InitializeFlipper(application);
      //  #endif