web-dev-qa-db-fra.com

admin.firestore n'est pas une fonction lorsque vous essayez d'utiliser les fonctions de Google Cloud avec node.js

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

askFirebase

11
ninj4 n00b

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.

13
Bob Snyder

functions.firestore est censé être functions.firestore()

1
Martin