こんにちは。
株式会社エス・スリーのスタッフです。
今日は、先日調査のために新しいfirebaseプロジェクトを作成し、Cloud Functionで関数を作成していた時のことについて。
【現象】
ローカルでは(firebase serveで開発していました)正常に動くのですが、デプロイに失敗する。
何度やっても。エラーも良く分からないものしか出ない。
firebase deploy --debug
で出力されたログを見ても良く分からない…
貴方のコードに問題がある、という漠然とした文しか見つかりません。
結局、デプロイしようとしていた関数をひたすらコメントアウトしていって問題を切り分け、やっと気が付きました。
【解決】
問題は、
Firebase AdminをInitializeしている箇所でした。
var serviceAccount = require("../credential/【プロジェクトID】-firebase-adminsdk-8tyh3-3e4bd1d954.json");
const app = admin.initializeApp({
credential: admin.credential.cert(serviceAccount),
databaseURL: "https://【プロジェクト名】.firebaseio.com/",
storageBucket: "【プロジェクト名】.appspot.com",
});
サービスアカウントの秘密鍵jsonを置いていた場所が問題だったのです。
functionのディレクトリの1つ上位の(つまり、普通ならばfirebaseのディレクトリ)に置いていたことが原因でした。
functionのディレクトリに置かないとダメなんですね。
良く考えればデプロイの時にそんな感じのメッセージ出ていましたね…
packaged functions (57.45 KB) for uploading
半日くらいつぶれてしまいましたが無事デプロイでき良かったです。
いつか同じミスをして困った人がこのブログにたどり着いてくれると良いなと思っています笑
最後までお読みいただき、ありがとうございました。