React Native Error - TypeError: null is not an object (evaluating '_reactNative.NativeModules.RNShare.FACEBOOK')

React Native Error - TypeError: null is not an object (evaluating '_reactNative.NativeModules.RNShare.FACEBOOK')

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

 TypeError: null is not an object (evaluating '_reactNative.NativeModules.RNShare.FACEBOOK')

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

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

如果你想在你的项目中使用自定义本地代码,你要么需要从 Expo 弹出到裸工作流程,要么 - 一个更新的选项 - 对你想要使用的一些本地依赖项使用 Expo EAS and custom dev clients. Expo EAS allows you to stay in the managed workflow and still use native modules. You might need to write something called a config plugin ,但查看文档,react-native-share 应该在没有配置插件的情况下工作得很好。

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

要了解有关从经典构建系统迁移到 EAS 的更多信息,see Expo's guide / documentation