无法读取未定义的属性“canShow” - React-Native-FBSDK - iOS

Posted

技术标签:

【中文标题】无法读取未定义的属性“canShow” - React-Native-FBSDK - iOS【英文标题】:Cannot read property 'canShow' of undefined - React-Native-FBSDK - iOS 【发布时间】:2017-03-29 17:56:12 【问题描述】:

我一直在尝试按照此处为 ios 列出的确切路径将 React-Native-FBSDK 安装到我的项目中: https://developers.facebook.com/docs/react-native/getting-started

但每次我实际使用 ShareDialog 时,都会收到错误消息Cannot read property 'canShow' of undefined。我现在已经完成了 3 次步骤,每次都得到相同的结果。我还需要做些什么才能真正将它与 React-Native 一起使用吗?

React-Native 0.42

React-Native-FBSDK 0.5

【问题讨论】:

您找到解决方案了吗?我遇到了同样的问题 @DeanMWake 是的,我刚刚在下面发布了答案。我花了几天时间才弄明白。 【参考方案1】:

好的,我知道为什么会发生这种情况。 Facebook SDK 网站上的 react-native 文档是错误的。您需要遵循 github repo https://github.com/facebook/react-native-fbsdk 中的自述文件。

他们在自述文件中没有提到的是,如果您尝试将 SDK 安装到您的项目而不是您的文档文件夹中,那么有一种方法。如果您作为一个团队工作或使用多台机器来开发您的应用程序,您可能希望在您的 React-Native 项目中执行此操作。将它放在您的项目中只允许您克隆您的 repo 和 npm i 和您完成的 vs 在您用于开发的每台机器上安装 sdk,然后确保 xCode 具有正确的路径。

因此,当您执行 iOS 步骤时,它会告诉您下载 sdk 并将其移动到 ~/Documents/FacebookSDK,您实际上可以将其直接放在应用程序的 ios 目录中的 Frameworks 文件夹下。 (如果它不是 Frameworks 文件夹,只需创建一个)然后按照其余步骤操作,只要提到 ~/Documents/FacebookSDK,只需使用来自 /ios/Framworks 的文件。

请注意,如果您决定将 SDK 放入您的项目中,它将使您的存储库大小增加 50-100MB。从 SDK 中删除 Samples 文件夹也很好,因为它们只是占用空间并且不需要。

【讨论】:

以上是关于无法读取未定义的属性“canShow” - React-Native-FBSDK - iOS的主要内容,如果未能解决你的问题,请参考以下文章

JS TypeError:无法读取未定义的属性“...”,尽管返回了数据?

TypeError:无法读取未定义的属性“keycloak-token”

TypeError:无法读取未定义的属性“viewManagersNames” - 将 Jest 和 Enzyme 与 React Native TypeScript 包集成

无法读取未定义类型错误的属性“推送”:无法读取未定义错误的属性“推送”

带有 Ionic 4 的 SQLite?无法读取未定义类型错误的属性“then”:无法读取未定义的属性“then”

`无法读取未定义的属性(读取'组件')`