Pendant que j'exécute la commande firebase deploy, j'obtiens cette erreur:
je déploie des fonctions
fonctions i: s'assurer que les API nécessaires sont activées ...
i runtimeconfig: s'assurer que les API nécessaires sont activées ...
✔ runtimeconfig: toutes les API nécessaires sont activées
✔ fonctions: toutes les API nécessaires sont activées
fonctions i: préparation du répertoire des fonctions pour le téléchargement ...
fonctions i: fonctions packagées (4,04 Ko) pour le téléchargement
✔ fonctions: dossier de fonctions téléchargé avec succès
je démarre le processus de libération (cela peut prendre plusieurs minutes) ...
fonctions i: création d'une fonction suiveuse Notification ...
⚠ fonctions: échec de création de la fonction suiveur
⚠ fonctions: Erreur HTTP: 400, la demande contient des erreurs
⚠ fonctions: 1 fonction (s) n'a pas pu être déployée.
Les fonctions de déploiement comportaient des erreurs. Pour continuer à déployer d'autres fonctionnalités (telles que> base de données), exécutez: firebase deploy --except functions
Erreur: les fonctions ne se sont pas déployées correctement.
Avoir des problèmes? Essayez Firebase deploy --help
Tout le reste fonctionne sans problème. Seulement quand j'essaye de faire quelque chose avec Firebase Firestore.
Cela m'arrivait aussi, puis je me suis rendu compte qu'au 2e niveau, le firestore n'autorise que les documents et non les collections.
J'essayais d'écouter ce chemin:
/collection/document/{wildcard}
Vous pouvez soit faire quelque chose comme
/collection/{wildcard}
ou
/collection/document/collection/{wildcard}
J'ai aussi eu ce problème. Dans mon cas, c'était parce que mon chemin de déclenchement avait une barre oblique dans le chemin du document.
Si changeant:
functions.firestore
.document('some_path/{pushId}/')
À:
functions.firestore
.document('some_path/{pushId}')
Je l'ai réparé pour moi. Il semble que cela soit dû à une variété de problèmes et la cli Firebase ne fait pas un bon travail pour expliquer les raisons.
Le problème est que vous ne faites référence qu'à une collection et non à un document comme:
exports.myFunctionName = functions.firestore
.document('users/marie').onWrite((event) => {
// ... Your code here
});
Vous devez référencer le document comme:
exports.myFunctionName = functions.firestore
.document('users/marie').onWrite((event) => {
// ... Your code here
});
Vous pouvez également utiliser un caractère générique comme:
exports.myFunctionName = functions.firestore
.document('users/{userId}').onWrite((event) => {
// ... Your code here
});
Il est décrit ici: https://firebase.google.com/docs/functions/firestore-events
J'espère que je pourrais aider
Le problème est probablement dû à la longueur du nom de la fonction.
Donc, si le nom est:
myFunctionsFromWorksWithCustumersTiggersTests
changer pour un nom plus court, comme:
WorkWithCustumers
J'espère avoir aidé.
Okej c'est ce que vous devez regarder.
puisque tu as
exports.yourFunctionName = functions.firestore.document
la chose que vous devez regarder est le .document
Votre chemin [[# # ~] doit [~ # ~] pointer vers un document et non vers une collection.
donc cela ne fonctionnera pas:
/level1/{level1Id}/level2
<- il pointe vers une collection
cela fonctionnera:
/level1/{level1Id}/level2/{level2Id}
la fonction cloud recherchera lorsqu'un document a un action
J'espère que cela aidera n'importe qui
J'obtenais également la même erreur jusqu'à ce que je change mon nom de fonction
create_template_
à
create_new_template
Il se peut que "_" (trait de soulignement) à la fin du nom de la fonction entraîne cette erreur.
J'ai vécu cela en raison du trait de soulignement au début du nom de la fonction d'exportation. Vous pouvez le tester vous-même en essayant ceci:
exports._someLongNameWithUnderscore= functions.auth.user().onCreate(user => {
return true;
});
exports.someLongNameWithoutUnderscore= functions.auth.user().onCreate(user => {
return true;
});
exports.shortName= functions.auth.user().onCreate(user => {
return true;
});
Celui avec le trait de soulignement au début ou à la fin échouera avec HTTP:400
et les autres se déploieront.
J'ai eu la même erreur en essayant de publier une fonction écoutant un pub/sub Cloud, qui commençait par des caractères numériques.
exports.nightly_pruning = functions.pubsub.topic('24hr-tick').onPublish((event) => {
...
});
Corrigé en changeant simplement le nom:
exports.nightly_pruning = functions.pubsub.topic('nightly-tick').onPublish((event) => {
...
});
(Merci à Nikolai Hegelstad ci-dessus. Je n'ai pas la réputation de commenter.)
Cela peut également se produire si vous utilisez la mauvaise version Node. Je viens de ressentir cela après avoir défini ma version de nœud sur 8.x tout en travaillant sur les fonctions. Revenu à v10.x et le problème disparu.
Je voulais juste souligner également que le linter rejettera les sauts de ligne sur la déclaration de l'auditeur, c'est-à-dire:
exporst.myFunc = functions.firestore
.document('collection/{uid}')
.onEvent(...)
dont le linter n'aide pas beaucoup et n'est pas couvert dans la documentation (comme d'habitude)
Mon problème avec le même message d'erreur était que le pubsub de Cloud Functions ne semble pas prendre en charge les sujets dont les noms commencent par des caractères numériques.