🤖
Cloudflare WorkersでFCMを動かす
結論
compatibility_flags
にnodejs_compat
を設定すればほぼ動く。一点引っかかって情報もなかったので書いておく。
突き当たった問題
問題1
普通にドキュメントの通りにAdmin SDKを使って動かすとsendEach()
とsendEachForMulticast()
がエラーになる。
TypeError: Cannot read properties of undefined (reading 'close')
これは、sendEach内でnode:http2
モジュールに依存しているためで、Cloudflare Workersは2025/10/3時点でこれに対応していない(ドキュメント)。
対処法は、sendEach()
を呼ぶ前のどこかでレガシーモードを有効にしておくこと。
messaging.enableLegacyHttpTransport();
このメソッドは非推奨とされているのでいつか消えるかもしれないが、firebase-admin@12.5.0
ではまだ消えていなかった。
Discussion