React Native 错误 - TypeError: null 不是对象(评估 '_reactNative.NativeModules.RNShare.FACEBOOK')

Kev*_* B. 4 typeerror react-native expo react-native-share

我正在研究 React Native 项目,并且正在使用 Expo. 我想将react-native-share包添加到我的项目中,但是在添加任何代码之前我一直收到此错误。

 TypeError: null is not an object (evaluating '_reactNative.NativeModules.RNShare.FACEBOOK')
Run Code Online (Sandbox Code Playgroud)

现在我知道博览会有自己的共享版本,但是您无法指定一个人也可以在哪里共享它,这确实使该功能毫无用处。似乎很明显,我无法使用这个包的原因是因为我正在使用 expo 并且无法将 pod 安装到项目中 - 由于 expo 拒绝它 -。所以我该怎么做?关于如何解决这个问题有什么建议吗?

Max*_*use 5

您通常无法使用 Expo 将依赖项与本机代码一起使用。至少在使用经典构建系统时(当您expo start在终端中运行来运行项目时,您正在使用它)。react-native-share具有本机代码(您可以通过访问存储库并查看库是否具有ios和来检查android文件夹来检查),因此不能与“标准”Expo 一起使用。

如果您想在项目中使用自定义本机代码,您需要从 Expo 弹出到裸工作流程,或者 - 一个较新的选项 - 使用Expo EAS自定义开发客户端。Expo EAS 允许您留在托管工作流程中并仍然使用本机模块。您可能需要为您想要使用的一些本机依赖项编写称为配置插件的东西,但是查看文档,react-native-share东西,但查看文档,在没有配置插件的情况下应该可以正常工作。

因此:要么弹出到 Expo 裸工作流程,要么使用 Expo EAS 和自定义开发客户端将本机依赖项与 Expo 托管工作流程结合使用。但请注意,您至少需要 Expo SDK 41 才能使用 EAS 和自定义开发客户端。

要了解有关从经典构建系统迁移到 EAS 的更多信息,请参阅 Expo 的指南/文档