在诊断为什么我的iOS反应本机构建失败的原因时,我遇到了很多问题。在诊断了其他一些错误之后,我现在面临的问题是,无论我尝试什么,该错误 React / RCTEventEmitter.h未找到困扰着我和我的应用。这只是由react-native init
创建的基本的本机应用程序。
我几乎尝试了以下所有组合:
/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开发而言我还很陌生,但是我在上面所做的事情似乎可以解决此问题,但事实并非如此。该错误似乎很明显,但我不知道该怎么办。
我知道有很多关于此问题的文章,但是我看到的大多数文章/问题都可以解决,但由于某种原因,我面临的具体情况似乎异常。我想知道是否还有其他提示或遇到这样的问题?非常感谢您的帮助!
答案 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 setup和plugin configuration
4)安装app center
as by instructions
如果问题未解决
5)Add the following line至node_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"
#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)
按照此步骤
RNFirebase.xcodeproj
库Build Phases
标签Pods_{projectName}.framework
个文件如果无法使用,请启用并行化功能,然后重试
您需要确保Pods是在RNFirebase之前构建的。
答案 3 :(得分:0)
此问题必须通过这种方式解决 :
AppCenter
的所有引用(使用 Cmd - F 快捷方式)pod install
命令
希望这会有所帮助。