React Native 上的 Firebase 客户端

Firebase client on ReactNative

在ReactNative上使用Firebase时,会出现这样的错误信息:

can't find variable process

但是,如果我手动要求 firebase/lib/firebase-web.js,它将显示:

can't find variable document

我该如何解决这个问题?

我刚刚在我的 React 本机应用程序中尝试使用 sockets.io 时遇到了同样的问题,希望我能提供帮助。

你不能使用firebase的节点模块的原因是因为在react native中还没有为websockets支持(firebase依赖)创建一个polyfill。

如果您查看 issue #619 中的 react native 回购协议,您会发现当前关于创建 websockets api polyfill 的讨论。

我们解决它的方法是使用 Jason 的套接字库的修改版本并围绕该文件创建 our own repo。然后我们将下面的行添加到我们的 package.json 依赖项中。

"react-sockets": "crewapp/react-native-sockets-io"

Jason 版本的 sockets.io 客户端文件起作用的原因是因为将 react-native 添加为用户代理。您可以在文件顶部找到进行此更改的代码:

window.navigator = {
  userAgent: "react-native"
}

完成这些步骤后,您应该能够像往常一样要求 sockets.io / firebase

只是我们的计算。 Pavan 的回答很有帮助,但在与 Firebase 一起使用时并不完全正确。

对于 firebase,请按照以下步骤操作:

  1. wsExample 下载 firebase-debug.js。或者您可以通过 npm 安装 wsExample 并在其中要求 firebase-debug.js
  2. 使用 badfortrains 的分叉 React-Native:

    "react-native": "git://github.com/badfortrains/react-native#WebSocket"
    
  3. 像这样新建 Firebase:

    var firebase = require("../../firebase-debug.js");
    var rootRef = new Firebase(Const.FB_ROOT);
    

现在一切正常!

我在 React Native 上也遇到了 socket.io 的问题,解决方案是获取有关新数据的通知,如果数据足够大 - 通过简单的 RESTfull 请求获取它。在我的例子中,数据足够小,可以在通知 API.

内全部发送

我正在使用 GCM 服务从 nodejs 服务器向 phone 发送通知。顺便说一句,它比插座连接使用更少的电池并且工作得很好:)