🤖
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