Firebase Cloud Function をローカルで実行する
Cloud Function をローカルで実行する方法を用意してくれている: ローカルでの関数の実行 | Firebase
手順はドキュメントに書いてある通りで簡単にできる。
firebase ライブラリの更新
$ npm install --save firebase-functions@latest $ npm install -g firebase-tools
ローカルデプロイ
まず Function を作る
これは https://my-firebase-url/sample?text=text
にアクセスするとその text を返却するだけのもの。
index.js:
const functions = require('firebase-functions'); const admin = require('firebase-admin'); admin.initializeApp(functions.config().firebase); exports.sample = functions.https.onRequest((req, res) => { const text = req.query.text; console.log(text); response.status(200); });
ローカルデプロイ
$ firebase experimental:functions:shell i functions: Preparing to emulate functions. ✔ functions: sample firebase >
これでデプロイ成功で対話モードになっているので、コマンドを入力する。
request の記法で動く。
firebase > sample.get('?text=text'); Sent request to function. info: User function triggered, starting execution info: text RESPONSE RECEIVED FROM FUNCTION: 200, {"text":"text"} info: Execution took 8 ms, user function completed successfully
こんな感じでローカルデバッグできる。
メリット
Cloud にデプロイするのちょっと時間がかかるし、ログ見るのも Cloud Function のログを見ないといけないのでだるいけど、ローカルデバッグだと関数書き換えたらリアルタイムデプロイ & ログがその場で見えるので手探りで開発するときには便利。
あと Cloud Function で外部 API と通信しようとするとお金がかかるけど(プラン変更が必要)、ローカルデプロイだと外部 API と通信もできた。
Cloud Function がローカルで動くというのがイケてて良い。