使用 AngularFirestore 和 firebase 的“ERROR TypeError: Object(...) is not a function”
Posted
技术标签:
【中文标题】使用 AngularFirestore 和 firebase 的“ERROR TypeError: Object(...) is not a function”【英文标题】:"ERROR TypeError: Object(...) is not a function" using AngularFirestore and firebase 【发布时间】:2018-10-26 16:53:17 【问题描述】:我想在我的应用程序中使用 firebase 和 angularfire2,首先,我安装了它们,并用于声明:
在环境.ts中
export const environment =
production: false,
firebase:
apiKey: 'sfsdfdsff',
authDomain: 'sfsdfdf',
databaseURL: 'https://ng-sfsdfsf.firebaseio.com',
projectId: 'ng-fitnesssfsdfdsf',
storageBucket: 'ng-fsdfsdfsfdecff5.appspot.com',
messagingSenderId: '21331323'
;
在 app.module.ts 中,导入:
AngularFireModule.initializeApp(environment.firebase),
AngularFirestoreModule
在想要获取我的数据的组件中:
import AngularFirestore from 'angularfire2/firestore';
直到现在我还没有出错,但是当我想在构造函数中声明我的变量以使用它时:
constructor(private trainingService: TrainingService, private
db:AngularFirestore)
我有一个错误:
ERROR TypeError: Object(...) is not a function
at eval (firestore.js:28)
at ZoneDelegate.invoke (zone.js:388)
at Zone.run (zone.js:138)
在我的 package.json 中:
"angularfire2": "^5.0.0-rc.8.0",
"core-js": "^2.4.1",
"firebase": "^5.0.2",
我不知道为什么?
感谢您的帮助
【问题讨论】:
你找到解决办法了吗?我有同样的问题。 【参考方案1】:这里是 AngularFire 维护者,我们在迈向 5.0 GA 时进行了许多重大更改。为了支持 Angular 6,AngularFire 的最新版本需要 rxjs 6。虽然降级或固定到旧版本可以快速而肮脏地修复,但我不建议这样做,因为它会让你无法改进未来。
如果您有尚未升级的依赖项,我建议将 rxj6 升级到版本 6 并包括 rxjs-compat
:
npm i rxjs@^6.0 rxjs-compat
密切关注angularfire changelog 以获取有关任何重大更改的重要信息;一旦我们达到 GA,我们将遵守 semver。
这里是RXJS 5 => 6 migration guide,供参考。
【讨论】:
这是我前两天在 angularfire 论坛上看到的内容。终于成功了! 既然这是一个正确的解决方案,为什么这个答案没有被选为正确的? 因为有时升级到 angular 6 根本不是一种选择(离子 3 和其他 angular5 依赖项)。生产库不应该有“重大”更改,应该创建一个单独的分支,James。 从来没有?我们必须进行更改以支持 RXJS 和 Angular,这有重大变化。我的意思是随意分叉所有这些库,毕竟它是开源的。 角度 7 怎么样【参考方案2】:我有同样的问题,但我解决了。你可以关注我的作品。这是 ionic 的示例。
安装 rxjs
npm i rxjs@^6.0 rxjs-compat
将 rxjs-compact 导入文件
import AngularFireDatabase, AngularFireList from 'angularfire2/database';
import Observable from 'rxjs-compat';
import map from 'rxjs-compat/operators';
https://***.com/a/50447449/6567753
【讨论】:
【参考方案3】:npm install rxjs@6 rxjs-compat@6
这解决了问题
【讨论】:
【参考方案4】:我在安装"angularfire2": 5.0.0-rc.9
时遇到了同样的错误。
当我回滚到5.0.0-rc.6
时,错误消失了。
npm install angularfire2@5.0.0-rc.6
npm install firebase@4.12.1
【讨论】:
你是怎么做到的。回滚? @Sodhisaab 卸载了 rc9 和npm install angularfire2@^5.0.0-rc.6
并确保它与 firebase 4.12.1 兼容
你说的命令我已经试过了。但它安装了 ..rc.9 而不是 6.
是的。正如@James Daniels 所说,此修复程序将起作用。但通常情况并非如此。当没有机会实现时,这很好。
这行得通,但这太令人沮丧了。谢谢你的帮助haifzhan。【参考方案5】:
这是我的解决方案:
npm uninstall angularfire2
npm install angularfire2@5.0.0-rc.4
npm uninstall firebase
npm install firebase@4.8.0
【讨论】:
【参考方案6】:去掉版本前面的^
这个。
就这样吧。
...
"angularfire2": "5.0.0-rc.6",
"firebase": "4.12.1",
【讨论】:
【参考方案7】:我遇到了同样的错误。一旦我用sudo npm update rxjs
更新了 rxjs。然后用sudo npm i rxjs@latest rxjs-compat
更新了 rxjs-compat。修复漏洞后运行ng build
,然后运行ng serve
。这解决了我的错误。 (在 macOS 上)
【讨论】:
【参考方案8】:我首先卸载了firebase和angularfire2:
npm uninstall firebase
npm uninstall angularfire2
然后重新安装:
npm install firebase@4.12.1
npm install angularfire2@5.0.0-rc.6
在实际安装的版本中使用^
angularfire2@5.0.0-rc.9 所以我只是删除了该部分。
【讨论】:
以上是关于使用 AngularFirestore 和 firebase 的“ERROR TypeError: Object(...) is not a function”的主要内容,如果未能解决你的问题,请参考以下文章
无法解析 AngularFirestore 的所有参数:([object Object], ?)