7

Od VS Code terminalu zintegrowanym biegnę firebase serve --only functions,hosting następnie w zakładce debug utworzonego domyślny launch.json:funkcje debugowania w Kodeksie VS

{ 
    "version": "0.2.0", 
    "configurations": [ 
    { 
     "type": "node", 
     "request": "launch", 
     "name": "Launch Program", 
     "program": "${file}" 
    } 
    ] 
} 

Chcę debugowania po stronie serwera (funkcje/index.js) nie po stronie klienta.

Próbowałem konfiguracji od https://code.visualstudio.com/docs/nodejs/nodejs-debugging bez powodzenia.

Jak debugować funkcje Firebase w kodzie VS?

+0

Debugowanie za pomocą testów jednostkowych jest prawdopodobnie najlepszą opcją w tej chwili: https://firebase.google.com/docs/functions/unit-testing –

+0

Nie jest to preferowana opcja, ale jeśli jest jedyną działającą, pójdę z tym . –

Odpowiedz

3

Nie można debugować funkcji Firebase bez uprzedniego zdefiniowania zmiennych konfiguracyjnych Firebase. Firebase CLI robi to za Ciebie.

Do debugowania możesz wypróbować tę samą sztuczkę, co w przypadku testu jednostek funkcji Firebase.

Dodaj następujące linie do pliku index.js przed wywołaniem admin.initializeApp(functions.config().firebase):

admin.initializeApp = function() {} 
functions.config = function() { 
    return { 
     firebase: { 
      databaseURL: 'https://not-a-project.firebaseio.com', 
      storageBucket: 'not-a-project.appspot.com', 
     } 
    }; 
} 

można debugować funkcje Firebase teraz w taki sam sposób jak każdy inny Google Cloud funkcję:

  1. Install Emulator funkcji chmurowych:

    npm install -g @google-cloud/functions-emulator 
    
  2. St sztuka emulatora:

    functions start 
    
  3. wdrożyć swoją funkcję:

    functions deploy helloWorldFunction --trigger-http 
    

    dostaniesz wyjście tak:

    Waiting for operation to finish...done. 
    Deploying function........done. 
    Function helloWorldFunction deployed. 
    
    Property | Value 
    ---------|------------------------------------------------------------------------ 
    Name  | helloWorldFunction 
    Trigger | HTTP 
    Resource | http://localhost:8010/helloWorldProject/us-central1/helloWorldFunction 
    
  4. Aby debugować za pomocą standardowego typu node.js Debugger:

    functions debug helloWorldFunction 
    

    Dostaniesz:

    Debugger for helloWorldFunction listening on port 5858. 
    
  5. Teraz dodaj następujące linie do swojego launch.json VS Kodeksu

    { 
        "version": "0.2.0", 
        "configurations": [ 
         { 
          "name": "Node.JS (local)", 
          "type": "node", 
          "request": "attach", 
          "port": 5858 
         } 
        ] 
    } 
    
  6. Uruchom debugowanie w kodzie VS i wyzwolić swoją funkcję przez wywołanie URL masz w kroku nr 3.

    Możesz również uruchomić tę funkcję, wpisując functions call helloWorldFunction na terminalu.

Szczegółowe informacje można znaleźć w instrukcji tutaj Cloud Functions Local Emulator.

+0

Podczas próby wdrożenia pojawiają się błędy.Szukam w google, nic nie pomogło, poddaję się. –

+0

Cześć Andrew! Twoja odpowiedź była niesamowita, ale musiałem wprowadzić pewne poprawki, aby to zadziałało. Najpierw należy usunąć wiersz "admin.initializeApp = function() {}"; to sprawia, że ​​kolejne wywołanie metody admin.initializeApp jest bezużyteczne. Po drugie, proszę wyjaśnić, że not-a-project.firebaseio.com powinien zawierać poprawny adres do twojej aplikacji firebase; to jest trochę niejednoznaczne z nazwą nie-projektu. Wreszcie, wewnątrz obiektu firebase w functions.config musiałem ustawić "credential: admin.credential.applicationDefault()". Dzięki tym modyfikacjom udało mi się uruchomić emulator i debugować na VSCode –

+0

Jestem nieco zaskoczony, że sugerujesz instalację i używanie emulatora funkcji GCP, gdy emulator funkcji Firebase byłby już zainstalowany. Zakładam, że są one w zasadzie tym samym, ale bardziej sensowne jest używanie narzędzi/emulatora funkcji FB podczas korzystania z funkcji FB. – Tom