web-dev-qa-db-fra.com

Fonctions Firebase: "erreur de connexion" incertaine

Je reçois cette erreur à chaque fois que je m'exécute avec mon HTTP Firebase Cloud

Function execution took ****ms, finished with status: 'connection error'

Cela se produit de manière incohérente, mais je ne parviens pas à cerner le problème. Je ne crois pas que l'erreur se trouve dans mon application, car elle ne montre pas l'impression d'une erreur. Et ma propre connexion avec firebase lors de l’exécution de cette fonction de cloud n’écartera pas.

Avez-vous une idée des raisons pour lesquelles Firebase ne parvient pas à exécuter de façon aléatoire les exécutions de fonctions cloud avec "erreur de connexion"?

22
Kyle Hotchkiss

Function execution took ****ms, finished with status: 'connection error' a deux causes principales:

  1. Essayez d’appeler un service autre que Google lorsque vous utilisez le plan Spark (voir page de tarification ). Cela peut être corrigé en passant à un plan payé.

  1. Une fonction ne sait pas si une promesse est résolue ou non. Chaque promesse doit être retournée, comme indiqué dans la documentation ici . Il y a aussi un blog (avec une vidéo utile!) à ce sujet.

Quelques exemples de promesses non rendues:

exports.someFunc = functions.database.ref(‘/some/path’).onCreate(event => {
     let db = admin.database();

     // UNRETURNED PROMISE
     db.ref(“/some/path”).remove();

     return db.ref(“/some/other/path”).set(event.data.val());
});
exports.makeUppercase = functions.database.ref('/hello/{pushId}').onWrite(event => {
    return event.data.ref.set('world').then(snap => {

      // UNRETURNED PROMISE
      admin.database().ref('lastwrite').set(admin.database.ServerValue.TIMESTAMP);

    });
});
exports.makeUppercase = functions.database.ref('/hello/{pushId}').onWrite(event => {

    // UNRETURNED PROMISE
    event.data.ref.set('world').then(snap => {
        return admin.database().ref('lastwrite').set(admin.database.ServerValue.TIMESTAMP);
    });
});

Pour vous aider à résoudre cette erreur avant de déployer du code, consultez cette règle eslint .

Pour un examen approfondi des promesses, voici quelques ressources utiles:

22
Jeff

Je pense que cela pourrait être trop de connexions simultanées à la base de données Firebase:/ https://groups.google.com/forum/#!topic/firebase-talk/4RjyYIDQMVQ

1
pete

il pourrait s'agir de bibliothèques obsolètes.

  1. aller au terminal

  2. commande à l'intérieur du dossier des fonctions 

nPM obsolète

cela montrera que toutes les bibliothèques doivent être mises à jour.

  1. Pour mettre à jour la commande write des bibliothèques

npm update

  1. déployer des fonctions cloud avec

firebase deploy --only functions

0
María Teresa

Je reçois cela sur un déclencheur HTTP qui appelle immédiatement response.end () sans autre code! 

J'avais une fonction très complexe qui fonctionnait très bien, puis elle a cessé de fonctionner à cause de cette erreur. J'ai essayé pendant des heures de jouer avec mon code jusqu'à ce qu'il ne reste plus qu'une réponse.end () et l'erreur persiste.

J'ai trouvé qu'en supprimant le déclencheur (le déploiement de mes déclencheurs avec le déclencheur incriminé mis en commentaire), le déploiement à nouveau avec le déclencheur non commenté semble l'avoir corrigé. 

Il existe peut-être un bogue qui fonctionne et qui est réinitialisé lorsque vous supprimez le déclencheur dans le cloud.

J'espère que cela évite une certaine frustration à quelqu'un.

0
Joshua Dyck