web-dev-qa-db-fra.com

Erreur des fonctions cloud pour Firebase: "400, le changement de type de déclencheur de fonction ou de fournisseur d'événements n'est pas autorisé"

Quand je lance firebase deploy Je reçois ce message d'erreur:

functions: HTTP Error: 400, Change of function trigger type or event provider is not allowed
24

TL; DR

firebase functions:delete yourFunction // this can be done via the Firebase Console as well
firebase deploy

Explication

Fondamentalement, Cloud Functions attend le même déclencheur pour chaque fonction tout le temps, c'est-à-dire qu'une fois qu'il est créé, il doit s'en tenir à son déclencheur d'origine car chaque nom de fonction est connecté à un déclencheur spécifique. Le déclencheur ne peut donc être modifié qu'en en supprimant la fonction d'abord puis en la recréant avec un déclencheur différent.

Cela peut maintenant être fait facilement en utilisant le functions:delete commande:

firebase functions:delete yourFunction

la documentation propose des cas d'utilisation plus avancés également.

Ancienne solution

La solution consiste essentiellement à commenter ou à supprimer votre fonction, puis à enregistrer le fichier de fonctions et à déployer. La fonction sera supprimée dans Firebase, mais après cela, vous pouvez insérer/décommenter votre fonction et elle se déploiera à nouveau très bien. Cette erreur se produit lorsque vous prenez une fonction et changez le type de déclencheur qu'elle utilise, c'est-à-dire HTTP, base de données ou authentification.

Découpez-le d'abord

/* exports.yourFunction = someTrigger... */

Et puis, après déploiement ("déploiement firebase") remplacez votre déclencheur

exports.yourFunction = anotherTrigger...

Pour ceux qui tomberont dessus à l'avenir, la console Cloud Functions propose désormais un bouton Supprimer. screenshot of the right hand side's "more" options

3
Adrian Murray

Vous pouvez également accéder au panneau Fonctions cloud dans la console Google Cloud Platform et supprimer votre fonction à partir de là. Après cela, vous pouvez télécharger la fonction normalement à partir de la CLI Firebase. Je ne sais pas pourquoi ils n'ont pas d'option de fonction de suppression dans la console Firebase.

1
Ricky Gomes