Cloud-Functions SDKをv3→v4にアップデートした時に、Breaking Changesの対応をしたので共有します
TL;DR
Firebase Cloud Function SDKをv3→v4にアップデートしたことに伴い、Admin SDKのv9がドロップされた。
Admin SDKをv9→v11にアップデートしたことで解決した。
問題
最近Firebase関連のパッケージを最新版にアップデートした時に以下の問題が起きました。
例えば、Cloud FunctionsからFirestoreのドキュメントを監視するコードがありました。
exports.onDocWriteTriggerThatFails = functions.firestore
.document("collection/{doc}")
.onWrite((change, context) => {
Firestore Emulator Suiteでテストしたところ、エラーを吐いて失敗します:
(一部省略)
function[region-onDocWriteTriggerThatFails]
TypeError: firebaseApp.getOrInitService is not a function
at Object.getFirestore
at beforeSnapshotConstructor
at changeConstructor
at cloudFunction
at /Users/{...}/functionsEmulatorRuntime.js:516:16
at runFunction
at runBackground
at processBackground
at /Users/{...}/functionsEmulatorRuntime.js:690:27
at Layer.handle [as handle_request]
Cloud-Functions SDK v4のBreaking Changes
リリースノートを見ると、Admin SDKのv8, v9がサポート終了したとのことでした。
このリリースは v4.0.0
October 14, 2022と、かなり最近の出来事です。
Dropped support for Admin SDK versions 8 and 9. Update with npm install firebase-admin@latest --save.
リリースノートの指示に従い、Admin SDKを最新版のv11にしたところ、上記の問題は解決しました。
npm install firebase-admin@latest --save
最後に
Firebase関係のパッケージはこまめにアップデートすることが必要だと感じました。
また、検索しても見つからない問題は、リリースノートを見たら解決することもあるようです。
この記事が誰かの助けになれば幸いです!それでは、良いFirebaseライフを!