【问题标题】:Firebase client on ReactNativeReact Native 上的 Firebase 客户端
【发布时间】:2015-06-13 13:12:24
【问题描述】:
在 ReactNative 上使用 Firebase 时,会显示这样的错误信息:
找不到变量进程
但是,如果我手动需要firebase/lib/firebase-web.js,它将显示:
找不到可变文档
我该如何解决这个问题?
【问题讨论】:
标签:
firebase
reactjs
react-native
【解决方案1】:
我在我的 react native 应用程序中尝试使用 sockets.io 时遇到了同样的问题,希望我能提供帮助。
您不能使用 firebase 的 node 模块的原因是,还没有为 react native 中的 websockets 支持(firebase 所依赖的)创建 polyfill。
如果您查看 react native 的 repo 中的 issue #619,您会发现当前关于创建 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。
【解决方案2】:
只是想通了。 Pavan 的回答很有帮助,但在与 Firebase 一起使用时并不完全正确。
对于firebase,请按照以下步骤操作:
- 从wsExample 下载
firebase-debug.js。或者您可以通过 npm 安装 wsExample 并在其中要求 firebase-debug.js。
-
使用 badfortrains 的分叉 React-Native:
"react-native": "git://github.com/badfortrains/react-native#WebSocket"
-
像这样新建 Firebase:
var firebase = require("../../firebase-debug.js");
var rootRef = new Firebase(Const.FB_ROOT);
现在应该可以正常工作了!
【解决方案3】:
我在 React Native 上也遇到了 socket.io 的问题,解决方案是获取有关新数据的通知,如果数据足够大 - 通过简单的 RESTfull 请求获取它。在我的情况下,数据足够小,可以在通知 API 中全部发送。
我正在使用 GCM 服务从 nodejs 服务器向手机发送通知。顺便说一句,它使用的电池比插座连接少,而且效果很好:)