概要
Firebase Cloud Functionsで、意外なところでちょっと詰まったのでメモ。
問題
例えば以下のようにTriggerを設定したとする。
index.ts
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
import { myFunc } from './myFunc';
admin.initializeApp();
exports.myTrigger = functions.https
.onRequest(async (req, res) => {
await myFunc();
});
myFunc.ts
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
const db = functions.firestore();
export async function myFunc() { /* 処理 */ }
このとき、 $ firebase serve --only functions
すると
Error: The default Firebase app does not exist. Make sure you call initializeApp() before using any of the Firebase services.
なるエラー。はて、ちゃんと admin.initializeApp();
してあるのに、なぜだろう...
解決策
initializeApp()
してから import
しないとだめだったようだ。
index.ts
import * as functions from 'firebase-functions';
import * as admin from 'firebase-admin';
admin.initializeApp();
import { myFunc } from './myFunc';
exports.myTrigger = functions.https
.onRequest(async (req, res) => {
await myFunc();
});
教訓
先に initializeApp()
しよう!