如何修复 "Invariant Violation: requireNativeComponent: "RCTFBLoginButton“在 UIManager 中找不到。”?

How to fix "Invariant Violation: requireNativeComponent: "RCTFBLoginButton" was not found in the UIManager."?

首先让我说类似的 SO 问题表明问题可能与没有链接库有关。

我已经 运行 react-native link react-native-fbsdk 再次确认它确实已链接,并确认它是

rnpm-install info Platform 'ios' module react-native-fbsdk is already linked
rnpm-install info Platform 'android' module react-native-fbsdk is already linked

不过,我在 XCode 的 main.jsbundlelibReact.alibRCTFBSDK.a 项目中看到了几个 red indications (我发现这对显示在 "Recovered References" 下,当我试图在 Finder 中找到它时却指向任何地方)。所以,总而言之,强烈的迹象表明我的 FBSDK 设置出了问题。

因为设置指南中提到了这些,所以让我继续报告:

  1. 我已经下载了SDK,解压到我的~/Documents/FacebookSDK文件夹下
  2. 我已经将4个框架(BoltsFBSDKCoreKitFBSDKLoginKitFBSDKShareKit)拖到项目中,没有标记"Copy"选项
  3. 我的 "Build Settings" >> "Framework Search Paths" 有 ~Documents/FacebookSDK 的价值(仅此而已,没有别的)
  4. 我的 "Build Settings" >> "Other Linker Flags" 有 -ObjC -lc++ 的价值(这已经是这样了,我没有碰它,只是确认它有 ObjC,per Facebook 的指南)
  5. 我的 "Build Phases" >> "Link Binary With Libraries" 有 4 个框架,加上其他几个文件,包括树中红色的两个(libReact.alibRCTFBSDK.a )

虽然看起来问题确实出在那些红色文件中,但我没有任何线索或运气无法尝试修复它们,因此非常感谢您的帮助!

截至此问题,react-native-fbsdk github 指示应遵循 this guide,但步骤 2(链接 SDK)除外,框架是而是拖到项目中。 这类似于您从 FB 的仪表板内部获得的 "Quick Start" 指南中的指示。 这两个指南都是我所看到的问题的根源。

关注 this guide 而不是让它正常工作。

我为此苦苦挣扎了很多时间。经过一番调查和尝试,我是这样解决的:

  • 删除 node_modules 和 ios/Pods
  • 升级到 react-native 0.60
  • npm 安装
  • 将此添加到 Podfile:
    pod 'FBSDKCoreKit'
    pod 'FBSDKLoginKit'
    pod 'FBSDKShareKit'
  • 来自 ios 文件夹:```pod install ````

  • 将 AppDelegate 和 Info.plist 配置为 this guide 状态

我不必像指南所说的那样手动将框架拖到 Xcode 项目中。