Ionic 3(2018)从Firebase读取数据报错,求技术协助
解决AngularFire2获取数据时的
TypeError问题 看起来你遇到的这个TypeError: Object(...) is not a function错误,大概率是依赖版本不兼容导致的,具体来说是AngularFire2、Firebase和RxJS的版本匹配问题。
问题根因
你当前使用的angularfire2@5.0.0-rc.9已经采用了RxJS 6.x的新语法(比如pipe操作符、Observable的新创建方式),但你的项目依赖的是RxJS 5.5.8,两者语法不兼容,就会抛出这个错误。
两种修复方案
你可以根据自己的需求选择其中一种方案:
方案1:降级AngularFire2和Firebase到兼容RxJS 5.x的版本
这是最直接的方案,不需要修改现有代码:
- 先卸载当前的AngularFire2和Firebase:
npm uninstall angularfire2 firebase
- 安装兼容RxJS 5.x的指定版本:
npm install angularfire2@5.0.0-rc.7 firebase@4.12.1 --save
方案2:升级RxJS到6.x并兼容旧代码
如果你想保留较新的AngularFire2版本,可以升级RxJS:
- 安装RxJS 6.x和兼容包:
npm install rxjs@6 rxjs-compat@6 --save
rxjs-compat包可以让旧的RxJS 5语法在RxJS 6环境下正常运行,你的现有代码不需要做任何修改。
额外检查项
修复版本问题后,还需要确认Firebase数据库的读取权限是否开放(测试阶段可以临时放开):
在Firebase控制台的数据库规则中,设置为:
{ "rules": { ".read": true, ".write": true } }
注意:正式上线前一定要修改为更严格的权限规则,避免数据泄露。
完成以上操作后,重新运行项目,应该就能正常获取Firebase的数据了。
内容的提问来源于stack exchange,提问作者Edwin Diradinata
相关产品推荐
相关产品推荐

