在codepush和cocoapods中找不到React / RCTEventEmitter.h

时间:2019-03-13 21:28:35

标签: ios objective-c xcode react-native

在诊断为什么我的iOS反应本机构建失败的原因时,我遇到了很多问题。在诊断了其他一些错误之后,我现在面临的问题是,无论我尝试什么,该错误 React / RCTEventEmitter.h未找到困扰着我和我的应用。这只是由react-native init创建的基本的本机应用程序。

我几乎尝试了以下所有组合:

  • 更改“标题搜索路径”
  • 删除创建的 xcode / DeriveData 文件夹
  • “去整合”豆荚
  • pod安装
  • react-native-code-push xcodeproject / library直接拖放到我在 Libraries
  • 中的xbox中的应用程序中
  • xcode clean
  • 本机链接
  • 本机链接代码推送
  • 从Podfile中删除代码推送
  • 删除 ios / Pods 文件夹
  • 删除 ios / Podfile.lock 文件
  • 使用 xcodebuild 手动构建应用(相同错误)
/usr/bin/xcodebuild -sdk iphoneos -workspace ios/myApp.xcworkspace -scheme myApp  archive -archivePath myApp.xcarchive -UseModernBuildSystem=NO CODE_SIGNING_ALLOWED=NO

我的反应信息如下(其为macOS VM):

    System:
      OS: macOS High Sierra 10.13.1
      CPU: (4) x64 AMD Ryzen 7 1700X Eight-Core Processor         
      Memory: 102.70 MB / 4.00 GB
      Shell: 3.2.57 - /bin/bash
    Binaries:
      Node: 11.11.0 - ~/.nvm/versions/node/v11.11.0/bin/node
      Yarn: 1.13.0 - ~/.nvm/versions/node/v11.11.0/bin/yarn
      npm: 6.7.0 - ~/.nvm/versions/node/v11.11.0/bin/npm
    SDKs:
      iOS SDK:
        Platforms: iOS 11.2, macOS 10.13, tvOS 11.2, watchOS 4.2
    IDEs:
      Xcode: 9.2/9C40b - /usr/bin/xcodebuild
    npmPackages:
      react: 16.4.1 => 16.4.1 
      react-native: 0.57.0-rc.0 => 0.57.0-rc.0 
    npmGlobalPackages:
      react-native-cli: 2.0.1
      react-native: 0.58.6

我的Podfile是:

target 'myApp' do
  # Pods for AppCenter
  pod 'AppCenter/Crashes', '~> 1.13.0'
  pod 'AppCenter/Analytics', '~> 1.13.0'
  pod 'AppCenterReactNativeShared', '~> 1.12.0'
  # Uncomment the next line if you're using Swift or would like to use dynamic frameworks
  # use_frameworks!

  # Pods for myApp


  platform :ios, '9.0'
  pod 'CodePush', :path => '../node_modules/react-native-code-push'

end

我面临的确切错误是:

/Users/administrator/Desktop/BUILD/myApp/node_modules/react-native-code-push/ios/CodePush/CodePush.h:6:9: fatal error: 'React/RCTEventEmitter.h' file not found
#import "React/RCTEventEmitter.h"   // Required when used as a Pod in a Swift project

尽管对iOS开发而言我还很陌生,但是我在上面所做的事情似乎可以解决此问题,但事实并非如此。该错误似乎很明显,但我不知道该怎么办。

我知道有很多关于此问题的文章,但是我看到的大多数文章/问题都可以解决,但由于某种原因,我面临的具体情况似乎异常。我想知道是否还有其他提示或遇到这样的问题?非常感谢您的帮助!

4 个答案:

答案 0 :(得分:0)

错误被触发at this line,仅当在 Swift项目

中用作Pod时才需要
#import "React/RCTEventEmitter.h"   // Required when used as a Pod in a Swift project

该问题似乎是由此pull request引起的,建议您使用与react-native 0.57兼容的最新版本的react-native-code-push@5.6

尝试以下方法解决问题

1)确保为Podfile正确配置了Swift 如果您使用的是Swift,则将use_frameworks!添加到podfile中

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

2)重新安装react-native-code-push并将其配置为最新版本5.6

npm uninstall react-native-code-push
npm install --save react-native-code-push@5.6.0

遵循ios setupplugin configuration

4)安装app center as by instructions

如果问题未解决

5)Add the following linenode_modules/react-native-code-push/ios/CodePush/CodePush.h

#import "React/RCTEventEmitter.h"

#import "RCTEventEmitter.h"

#import <React/RCTEventEmitter.h>

如果上述解决方案不能解决问题

6)Remove the following line from ios/AppDelegate.m

#import "CodePush.h"

and add

#import <CodePush/CodePush.h>

此问题是由node_modules/react-native-code-push/blob/master/ios/CodePush/CodePush.h的以下几行引起的。 所有if语句都失败(这意味着这些类不可用)并且line 6正在执行。

line 1 #if __has_include(<React/RCTEventEmitter.h>)
line 2 #import <React/RCTEventEmitter.h>
line 3 #elif __has_include("RCTEventEmitter.h")
line 4 #import "RCTEventEmitter.h"
line 5 #else
line 6 #import "React/RCTEventEmitter.h"   // Required when used as a Pod in a Swift project
line 7 #endif

很高兴能帮助您进一步解决此问题

答案 1 :(得分:0)

我在将CodePush与RNPM和CocoapPods集成时遇到了相同/相似的问题。

我建议您手动安装它,option 3。第一次尝试就可以了。

我正在做一个非常大的项目,并且在iOS中遇到了类似的问题。解决我问题的方法是删除构建服务器所在计算机的“全局”缓存。另外,请尝试删除Xcode存档和派生数据;和Podfile.lock。

答案 2 :(得分:0)

按照此步骤

  1. 更新RNFirebase(如果不是最新版本)
  2. 关闭并行化
  3. 在Xcode导航器中选择RNFirebase.xcodeproj
  4. 选择Build Phases标签
  5. 在“带库的链接二进制文件”下,添加 Pods_{projectName}.framework个文件

如果无法使用,请启用并行化功能,然后重试

您需要确保Pods是在RNFirebase之前构建的。

答案 3 :(得分:0)

  

此问题必须通过这种方式解决

  • 查找并删除 AppCenter 的所有引用(使用 Cmd - F 快捷方式)
  • 重新安装软件包
  • 终端 中的 / ... / ios / ... / 文件夹中
  • 运行 pod install 命令

希望这会有所帮助。