React Native / Xcode升级,现在找不到RCTConvert.h

时间:2017-01-05 04:19:42

标签: xcode reactjs react-native

App在React Native 0.35.0上正常运行。通过react-native-git-upgrade更新到0.40.0后,在尝试在XCode中构建/运行应用程序时,我遇到了许多词法/预处理器问题。

React/RCTBridgeModule.h' file not found

点击此问题时,我看到了突出显示的内容:

#import <React/RCTBridgeModule.h>

它似乎不是搜索路径问题。

我尝试删除node_modules并再次运行npm install,但这没有修复任何问题。

10 个答案:

答案 0 :(得分:107)

正如第th0所指出的,iOS的RN 0.40有一个突破性的变化。简而言之,RN标头声明会更新为指向包含路径$(BUILT_PRODUCTS_DIR)/include/React

要解决此问题,您必须执行以下操作:

  1. 在Xcode中,转到项目方案(产品 - &gt;方案 - &gt;管理方案 - &gt;双击您的项目)。
  2. 点击左侧窗格中的“构建”选项。
  3. 取消选中构建选项下的'并行构建'。
  4. 然后在目标部分,点击“ + ”按钮,然后搜索“React”。选择它,然后点击“添加”。
  5. 'React'现在应该出现在目标部分下。单击并将其拖动到顶部,这样它就是列表中的第一个项目(在项目之前)。
  6. 清理项目并构建。
  7. 注意:您可能仍然与其他库(例如react-native-fbsdk)有类似的头问题,这些库指的是那些反应原生的.h文件。

答案 1 :(得分:6)

  

反应原生0.40

您必须将#import "RCTBridgeModule.h"替换为#import <React/RCTBridgeModule.h>

然后清理并再次构建

答案 2 :(得分:2)

0.40有一个重大变化,你可以看到详细信息here

直接从发行说明中引用:

  

这意味着所有iOS本机库都需要一个主要的版本   对于RN 0.40。我们试图尽量减少这种程度的变化,我们   对由此造成的任何不便表示歉意。

因此,在与react-native版本0.40兼容之前,所有本机iOS库都需要更新。

答案 3 :(得分:1)

如果您的应用不是很大,只需

1) rename original app
2) create the same app again react-native init <orig_app_name>
3) copy over all necessary files from your original app to the newly created one
4) adjust the package.json
5) npm install
6) react-native run-<ios|android>

我花了几个小时才找到,在哪里链接新库,这对我来说至少是一个有价值的选择和捷径。

希望它可以帮助某人

答案 4 :(得分:1)

此步骤有助于解决我的问题。我试过&#34;取消勾选并行化构建&#34;脚步。它对我不起作用。

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

答案 5 :(得分:1)

如果您使用pod,也许可以尝试以下解决方案:

转到标题搜索路径: Pods -> TARGETS -> (YOUR TARGET, like my target is RNGL) -> Build Settings -> All -> Search Paths -> Header Search Paths

添加路径: "${PODS_ROOT}/Headers/Public/React"非递归

答案 6 :(得分:0)

以下是我的工作方式:

  • 我将package.json清理为最新版本
  • 我通过@ max23 _
  • 完成了这个技巧
  • 我替换了所有的 导致相应#import '....h'错误的#import <React/.....h>

答案 7 :(得分:0)

更新

导入“ RCT / BridgeModule.h”

导入“ React / RCT / BridgeModule.h”

清洁和建造。

尽管我还没有测试它,但我怀疑如果不做任何更改而只是清理并构建它就可以解决问题。

答案 8 :(得分:0)

我有同样的问题。我已经通过从构建方案中删除应用的测试目标来解决了该问题。

答案 9 :(得分:0)

更改路径:

#import <React/RCTBridgeModule.h>

收件人:

#import <React/Base/RCTBridgeModule.h>

为我工作。