Voici l'en-tête du fichier node.js index.js:
const functions = require('firebase-functions');
const admin = require('firebase-admin');
admin.initializeApp(functions.config().firebase);
var db = admin.firestore();
Voici la fonction node.js pour écouter les modifications apportées à Firestore:
exports.myFoo = functions.firestore
.document('foo/{bar}')
.onWrite(event => {
// do stuff
}
C'est dans le fichier package.json:
"dependencies": {
"firebase-admin": "^5-.4.2",
"firebase-functions": "^0.7.1",
"firestore": "^1.1.6"
},
Lorsque j'essaie de faire une commande "firebase deploy", c'est l'erreur que je reçois:
Erreur: une erreur s'est produite lors de l'analyse de vos déclencheurs de fonction.
TypeError: admin.firestore n'est pas une fonction
J'ai pu reproduire l'erreur et forcer une solution brute. Je ne connais pas grand chose à propos de npm
et ne peux pas expliquer en détail pourquoi cette solution a fonctionné.
Mon package.json
original contenait:
"dependencies": {
...
"firebase-admin": "^4.2.1",
"firebase-functions": "^0.7.1",
...
},
Comme recommandé dans la documentation , j’ai exécuté ces deux commandes dans le dossier functions:
npm install -g firebase-tools
npm install firebase-functions@latest --save
J'ai aussi essayé:
npm install --save firebase-admin
npm upgrade
J'ai reçu à plusieurs reprises ces messages d'erreur:
+-- UNMET PEER DEPENDENCY [email protected]
npm WARN [email protected] requires a peer of firebase-admin@~5.4.2 but none was installed.
J'ai pensé que firebase-admin
avait besoin d'être mis à jour mais je ne pouvais pas y arriver. J'ai donc édité le fichier de dépendances pour supprimer cette ligne:
"firebase-admin": "^4.2.1"
puis couru npm install --save firebase-admin
à nouveau. Avec cela, le package.json
contenait la version "firebase-admin": "^5.4.2"
et var db = admin.firestore();
compilées sans erreur.
functions.firestore
est censé être functions.firestore()