在ReactNative上使用Firebase时,会显示以下错误消息:
无法找到变量进程
但是,如果我手动需要firebase/lib/firebase-web.js
,则会显示:
无法找到变量文档
我该如何解决这个问题?
答案 0 :(得分:4)
我尝试在我的本机应用程序中使用sockets.io时遇到了同样的问题,所以希望我能提供帮助。
您无法使用firebase的节点模块的原因是因为还没有为反馈原生的websockets支持(firebase依赖于)创建了一个polyfill。
如果你看看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。
答案 1 :(得分:2)
把它想象成我们的。 Pavan的回答很有帮助,但与Firebase一起使用时并不完全正确。
对于firebase,请按照以下步骤操作:
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);
现在应该就行了!
答案 2 :(得分:0)
我在React Native上也有socket.io的问题,解决方案是获取有关新数据的通知,如果数据足够大 - 通过简单的RESTfull请求获取它。在我的情况下,数据足够小,可以在通知API中发送。
我正在使用GCM服务从nodejs服务器向手机发送通知。顺便说一句,它使用更少的电池然后插座连接并且效果很好:)