🤖

Cloudflare WorkersでFCMを動かす

に公開

結論

compatibility_flagsnodejs_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