找不到React / RCTEventEmitter.h文件

时间:2018-02-08 10:49:09

标签: react-native

我正在尝试使用独立的Expo应用程序实现PushNotificationIOS。我正在运行SDK 21.0.0(React Native 0.48)。

我正在React/RCTEventEmitter file not found

我已完成以下步骤:

  • 打开我的.xcworkspace项目
  • RCTPushNotification.xcodeproj拖到我的库文件夹
  • libRCTPushNotification.a添加到App > Build Phases > Link Binary With Libraries
  • 在标题搜索路径下添加了$(SRCROOT)/../node_modules/react-native/Libraries - 我也尝试了/../。我也在Header Search Paths列表中有一堆Pod。

然后我将以下内容添加到AppDelegate.m中,但当我点击文件(⌘+点击)时,我会收到一个问号。

#import <React/RCTPushNotificationManager.h>

如果我将其更改为下面,它可以工作,我可以点击

#import "RCTPushNotificationManager.h"

但是,这是我的问题

当我清理并构建项目时,我在RCTPushNotificationManager.h中收到以下错误:

'React/RCTEventEmitter.h' file not found

8 个答案:

答案 0 :(得分:10)

@Dan我遇到了同样的问题,它也适用于RCTLinking,以及依赖于eventEmitter.h的其他库和一个独立的Expo项目。

问题是,自从Expo管理Cocoapods中的React以来,RCTPushNotification并没有引用Cocoapods文件React中的React。所以你应该进入RCTPushNotification.xcodeproj然后进入Targets - RCTPushNotification标题搜索路径并添加链接到&#34; ios / Pods / Headers / Public / React&#34;并设置为递归。

RCTPushNotification Target Build Settings 最简单的方法是导航到你的iOS / Pods / Headers / Public / React,然后将文件夹直接拖放到标题搜索路径的构建设置中,如下图所示。

enter image description here

在此之后终于出现了你最不可能引用ReactCommon /瑜伽,但ReactCommon / yoga应该在你的节点_modules / react-native / ReactCommon / yoga&#39;

答案 1 :(得分:2)

  1. 在XCode中打开您的项目。
  2. 打开Libraries文件夹。你应该看到React.xcodeproj和几个RCT * .xcodeproj。
  3. 将React.xcodeproj拖到其他每个项目中。
  4. 单击每个项目并导航到Build Phases选项卡。
  5. 单击Target Dependencies并将React添加为目标依赖项

答案 2 :(得分:2)

这对我的独立世博项目很有效

"react": "16.6.3",
"react-native": "0.58.6",

'RCTPushNotification'添加到您的广告连播中,然后运行pod install

pod 'React', :path => '../node_modules/react-native', :subspecs => [    
    'RCTPushNotification',
  ]

答案 3 :(得分:1)

只需执行以下步骤:

  1. 创建项目var jsonData = pm.response.json(); var newData; var newDataGroup = ""; function replaceValues() { _.each(jsonData.Variations, (arrayItem) => { _.each(arrayItem.Items, (item) => { if(item.Status !== "NonActive") { item.Status = "NonActive"; } newData = "{ \"Id\":\"" + item.Id + "\", " + " \"Status\":\"" + item.Status + "\"},"; newDataGroup = newDataGroup + newData; }); }); newDataGroup = newDataGroup.slice(0, -1); newDataGroup = "{ \"Products\": [ " + newDataGroup + " ] }"; } pm.test("Run Replace", replaceValues ()); var newJson = JSON.parse(newDataGroup);
  2. 将此行添加到ios文件夹中的pod文件中:react-native init project
  3. pod 'React-RCTPushNotification', :path => '../node_modules/react-native/Libraries/PushNotificationIOS'
  4. cd ios && pod install

无需麻烦的手动链接

答案 4 :(得分:0)

由于上面没有提及的内容对我有用,所以我开始尝试,这就是为我解决的问题:

手动将RCTPushNotificationManager.h复制到React-Core

在项目的根文件夹中执行:

cp ./node_modules/react-native/Libraries/PushNotificationIOS/RCTPushNotificationManager.h ./ios/Pods/Headers/Public/React-Core/React

这会将RCTPushNotificationManager.h中的node_modules/react-native/Libraries/PushNotificationIOS/手动复制到React中的ios/Pods/Headers/Public/React-Core/React文件夹中。


我不知道这是否是一个好的解决方案,但它可以工作。也许有人可以向我解释为什么它最初不在那儿?那将是黄金。

我非常认真地按照设置说明1进行了所有操作,但是除了上面提到的手动复制之外,其他任何操作都无效……

答案 5 :(得分:0)

使用这些库:

按照步骤进行, 一切都会正常 不需要其他

别忘了

  

pod install

答案 6 :(得分:0)

答案 7 :(得分:0)

#import RCTEventEmitter.h#import React/RCTEventEmitter.h替换为#import <React/RCTEventEmitter.h>

对我有用