Development

【Firebase】Cloud Functions for Firebase のデバッグ方法について

はじめに

担当プロジェクトで Cloud Functions for Firebase(以降、Cloud Functions と呼びます)を活用する機会があり、実装したコードのデバッグをしたいと思ったのですが、公式サイトやいろいろ情報を探してもテキストベースの情報が多く、ちょっとわかりにくいなと。

今後もこういった場面に出くわすことがあると思い、備忘録のためにも、実際に環境を作って、デバッグした方法を残すことにしました。

ここでは、Cloud Functions をエミュレーターにデプロイし、Visual Studio Code(以降、VSCode と呼びます)と連携してデバッグする手順について、まとめています。

用意するもの

VSCode
・Postman
(HTTP トリガーの Cloud Functions のためですが、ブラウザでも OK です。)

1.「launch.json」ファイル作成&デバッグ設定を定義

  1. launch.json」ファイルを作成します。
    (今回は、Node.js Cloud Functions を実装しているため、
     ここでは「
    Node.js」を選択して、ファイルを作成します。

  2. 作成した「launch.json」ファイルに以下のデバッグ設定を定義します。

      "version": "0.2.0",
      "configurations": [
          {
              "type": "node",
              "request": "attach",
              "name": "Attach to Functions",
              "port": 9229
          }
      ]
     

2.「package.json」ファイルにスクリプトを定義

  1. 「package.json」ファイルにエミュレーターを起動するためのスクリプトを定義します。

      "serve": "firebase emulators:start --inspect-functions"

3. エミュレーターを起動

  1. ターミナルを立ち上げて、Cloud Functions があるディレクトリに移動し、
    npm run serve」コマンドを実行して、エミュレーターの起動と、
     VSCode のデバッガー連携をします。

  2. エミュレーターの起動が完了すると、Cloud Functions がデプロイされます。

  3. 起動したエミュレーターは、ブラウザからも確認ができます。
    (ログを見たり、Firestore の操作などもできます。)

4.Cloud Functions をデバッグ

  1. トリガーに合わせて、Cloud Functions を実行します。

    ・HTTP トリガーの場合
      ブラウザや Postman を使用し、エンドポイントにリクエストを送信します。
      エンドポイントは、通常、以下の形式です。
      http://localhost:5001/<project-id>/<region>/<function-name>

      例)http://127.0.0.1:5001/xxx/asia-northeast1/xxxxx?[パラメーター]

    ・Firestore トリガーの場合
      Firebase Console のエミュレーター UI(通常  http://localhost:4000 )で、
      Firestore にデータを追加 / 更新 / 削除の操作をします。
    Pub / Subトリガーの場合
      エミュレーター起動後、別ウィンドウでターミナルを立ち上げて、
      以下の手順で、Shell を起動し、Cloud Functions を呼びます。

      1. 「firebase functions:shell」コマンドを実行して、Shell を起動します。
      2.   起動すると、呼び出す Cloud Functions の入力を求められるので、入力します。

  2. VSCode のデバッガーと連携済みのため、Cloud Functions を実行すると、
    ブレークポイントで停止することができ、デバッグ操作が可能になります。

おわりに

以上、Cloud Functions のデバッグ方法でした。
エミュレーターが使えることによって、ローカル環境でデバッグができるし、
Firebase Console のエミュレーター UI も提供されているので、
ログの確認や Firestore の操作なども簡単で、とても便利でした。
今後も Cloud Functions を活用する場合は、利用していければと思います。


Latest最新記事

Popular人気の記事