2 votes

Débogage local des fonctions Firebase (node.js)

Voir ci-dessous mon code est très simple....il écoute un changement sur un champ de la base de données en temps réel-base de données.

const functions = require("firebase-functions");
var admin = require("firebase-admin");

exports.onActiveUpdate = functions.database
  .ref("/profiles/users/{userId}/active")
  .onUpdate((change, context) => {
      //code here

    return true;
  });

J'ai essayé de déboguer le code localement avec les commandes suivantes

firebase serve --only functions
firebase serve
firebase emulators:start

Je reçois toujours le même message...

+  functions: Emulator started at http://localhost:5001
i  functions: Watching "C:\code\rn\xs\fb_functions\functions" for Cloud Functions...
i  functions[onActiveUpdate]: function ignored because the database emulator does not exist or is not running.
+  All emulators started, it is now safe to connect.

Mais quand je vais sur localhost:5001.... tout ce que je vois c'est une page blanche avec {"status":"alive"} au sommet.

Est-ce un comportement correct ? Merci de votre compréhension.

1voto

Gabe O'Leary Points 909

Vous pouvez utiliser https://github.com/GoogleChromeLabs/ndb pour déboguer votre http fonctions firebase.

Installez-le localement ou globalement et exécutez votre commande serve normale avec ndb :

ndb yarn serve

1voto

pref Points 374

Vous pouvez faire fonctionner l'émulateur en mode inspection en exécutant :

firebase emulators:start --inspect-functions

voir quel port est écouté par le client de débogage (par exemple, le port 9229). si vous utilisez VSCode, ayez launch.json dans le sous-dossier .vscode

{
"configurations": [
    {   "type": "node",
        "request": "attach",
        "name": "Debug",
        "port": 9229
    }
]

} puis cliquez simplement sur l'icône Debug dans votre VScode pour vous connecter au processus en cours. Placez maintenant un point d'arrêt dans le code de vos fonctions et invoquez-les par le biais du navigateur.

0voto

Doug Stevenson Points 6978

Selon la la documentation La ligne de commande pour démarrer les émulateurs de Cloud Functions et de Realtime Database est la suivante :

firebase emulators:start --only database,functions

0voto

Dery Points 1

Je viens d'essayer firebase emulator suite et j'ai trouvé qu'il permettait d'activer Inspecteur node.js et permettent ainsi un débogage local étape par étape.

En supposant que tous vos modules sont bons pour l'émulateur, nous pouvons nous concentrer sur l'activation du débogage local.

Je choisis MS Code comme client inspecteur.

  • Exécuter firebase emulators:start et vérifiez que votre fonction fonctionne bien en local.
  • Allez dans l'écran MS Code Run/Debug, sélectionnez "add a configuration..." et sélectionnez "{}Node.js : Attach to process" pour créer un nouveau fichier .vscode/launch.json. Vous verrez que la configuration de débogage avec le nom "Attach by Process ID" est générée.
  • Dans l'écran MS Code Run/Debug, lancez le nouveau débogueur "Attach by Process ID". Il vous sera demandé de choisir un processus de nœud auquel attacher le débogueur.
  • Vous devriez voir 2 processus "functionsEmulatorRuntime" parmi tous les autres processus node.js (1 pour le functionsEmulator lui-même et 1 autre pour votre code de fonction). Essayez de sélectionner chacun d'entre eux et vérifiez si le débogueur est capable de faire une pause sur votre point d'arrêt.

0voto

Kamal Mehta Points 3

Solution donnée par pref works. Voici mon fichier .vscode/launch.json

{
    "configurations": [
        {   "type": "node",
            "request": "attach",
            "name": "Node.js-Debugger",
            "port": 9229
        }
    ]
}

Voici ma commande firebase.

$ firebase emulators:start --inspect-functions --import emulator_data --export-on-exit

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X