Back to tech

Firebase Cloud Functions で "環境変数PORT=8080で指定されたポートで起動しない" 云々のエラーで悩まされた件

1 min read
Table of Contents

お久しぶりです。もみじんです。

個人で作っていた Firebase Cloud Functions のアプリがあります。

最近(と言っても一年ぐらい前)に v2 が正式にリリースされたということで、私も重い腰を上げてアップデートしました。

そのときに2日間悩まされたエラーがあったので同じ轍を踏まないように記事にしておきます。

悩まされたエラーと解決

エラーの詳細

以下のエラーに悩まされました。

Ready condition status changed to False for Revision *****-civ with message: The user-provided container failed to start and listen on the port defined provided by the PORT=8080 environment variable. Logs for this revision might contain more information.

日本語訳: Revision *****-civ の Ready condition status が False に変更され、メッセージが表示されました: ユーザー提供のコンテナが、環境変数PORT=8080で定義されたポートでの起動とリッスンに失敗しました。このリビジョンのログには、より詳細な情報が含まれている可能性があります。

パッと見た限りでは、 コンテナがエラーが起きて PORT 8080 で起動しなかったような内容です。

デプロイの仕方を間違えたかなと思いました。

ちなみにログエクスプローラでのエラーメッセージ以下のとおりです。

スクリーンショット-2023-06-12-23.42.37-1024x688.jpg

解決方法

解決方法は至ってシンプルで、エラーログ以外を見ることでした。

そうすると、Cloud Functions v2 で非推奨のAPIを使っていたことがわかりました。

私の場合は、v2では使用できないfunctions.config() を使っていたことが原因でした。(実装中 & ビルドしたときはエラーが出ないので見つけづらい・・・)

スクリーンショット-2023-06-12-23.44.29-1024x620.jpg

環境変数の実装の仕方いつの間にか変わっていたんですね。

環境を構成する  |  Cloud Functions for Firebase
firebase.google.com
image

まとめ

Cloud Functions v1 -> v2 に移行したときに悩まされたエラーについて記載しました。

とりあえず問題は解決してよかったです。

こういうインフラ系は苦手なので誰かにやってもらいたいです。