web-dev-qa-db-fra.com

"ERROR TypeError: Object (...) n'est pas une fonction" utilisant AngularFirestore et firebase

Je veux utiliser firebase et angularfire2 dans mon application, tout d'abord, je les ai installées, ainsi que pour les déclarations:

dans environment.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'
   }
  };

dans app.module.ts, importations:

AngularFireModule.initializeApp(environment.firebase),
AngularFirestoreModule

dans le composant où veux obtenir mes données:

import { AngularFirestore } from 'angularfire2/firestore';

jusqu'à ce moment je n'ai pas d'erreur, mais quand je veux déclarer ma variable dans le constructeur pour l'utiliser:

constructor(private trainingService: TrainingService, private 
db:AngularFirestore) { }

J'ai une erreur:

ERROR TypeError: Object(...) is not a function
at eval (firestore.js:28)
at ZoneDelegate.invoke (zone.js:388)
at Zone.run (zone.js:138)

Dans mon package.json:

"angularfire2": "^5.0.0-rc.8.0",
"core-js": "^2.4.1",
"firebase": "^5.0.2",

et je ne sais pas pourquoi?

merci de votre aide

10
Hazem HASAN

J'ai eu le même problème mais je l'ai résolu. Vous pouvez suivre mon travail. Ceci est un exemple pour ionique.

Installez rxjs

npm i rxjs@^6.0 rxjs-compat

importer rxjs-compact dans un fichier

import { AngularFireDatabase, AngularFireList } from 'angularfire2/database';
import { Observable } from 'rxjs-compat';
import { map } from 'rxjs-compat/operators';

https://stackoverflow.com/a/50447449/6567753

11
Biswajit

Mainteneur d’AngularFire, nous avons eu plusieurs changements radicaux alors que nous marchons vers la version 5.0. Afin de prendre en charge Angular 6, les versions récentes d’AngularFire nécessitent rxjs 6. Tandis que oui, le déclassement ou l’épinglage vers une ancienne version fonctionnerait comme une solution rapide et délicate, mais je ne dirais pas que cela vous éviterait d’améliorer les bibliothèques de l'avenir.

Je vous recommande de mettre à jour rxj6 vers la version 6 et d'y inclure rxjs-compat si vous avez des dépendances qui n'ont pas encore été mises à jour:

npm i rxjs@^6.0 rxjs-compat

Gardez un œil sur/ angularfire changelog pour obtenir des informations importantes sur tout changement radical; Une fois que nous aurons frappé GA, nous respecterons semver.

Et pour référence voici le RXJS 5 => 6 guide de migration .

34
James Daniels
npm install rxjs@6 rxjs-compat@6

Cela a résolu le problème

9
Adrita Sharma

J'ai la même erreur lors de l'installation de "angularfire2": 5.0.0-rc.9

L'erreur est partie quand je reviens à 5.0.0-rc.6.

npm install [email protected]
npm install [email protected]
5
Haifeng Zhang

C'était ma solution:

npm uninstall angularfire2
npm install [email protected]
npm uninstall firebase
npm install [email protected]
0

Supprimez ^ celui-ci devant la version. Alors comme ça.

{
    ...

    "angularfire2": "5.0.0-rc.6",
    "firebase": "4.12.1",
}
0
Mingyu Jeon

J'ai eu la même erreur. Dès que j'ai mis à jour rxjs avec Sudo npm update rxjs. Et puis mis à jour rxjs-compat avec Sudo npm i rxjs@latest rxjs-compat. Après avoir corrigé les vulnérabilités puis exécuté ng build puis ng serve. Cela a corrigé mon erreur. (sur macOS)

0
EZCity