2020.7.7
2020.7.10

Cloud Functionsのランタイム「Node.js」のアップグレード

FirebaseのCloud Functionsに久しぶりにアクセスしたら、ダッシュボードの画面に「Node.js 8 のサポートを終了しました。」と表示されていたので、ランタイムであるNode.jsのバージョンを「8」から「10」にアップグレードする方法。

目次

  • ランタイム「Node.js 8」のサポート終了
  • Node.jsのアップグレード
  • firebase-toolsのバージョンアップ
  • アップグレードする際の注意点

ランタイム「Node.js 8」のサポート終了

FirebaseのCloud Functionsにアクセスしたら以下のような画面が表示されます。

サポート終了とで表示されていたのでいきなり使えなくなったのか、と思いましたが、どうやら2021年2月まではデプロイや実行は行えるようです。

Node.jsのアップグレード

以下、ランタイムNode.jsのバージョンを「8」から「10」にアップグレードする方法です。

方法は簡単で、functions配下のpackage.jsonを開き、engines > nodeの値を「8」から「10」に変更するだけです。

あとは必要に応じてエミュレータでテストして、問題なければ本番環境にデプロイします。

実際に実行して問題なく動作すれば完了です。

firebase-toolsのバージョンアップ

通常、上記の方法だけでアップグレードできますが、私の環境の場合、firebase-toolsのバージョンが古く(7.13.0)、デプロイ中の出力メッセージに「functions: updating Node.js 10 (Beta) function ~」と出ていて、「Beta」というのが気になったので、念のため、firebase-toolsのバージョンも上げておくことにしました。

FirebaseのドキュメントにもNode.js 10にアップグレードする時はFirebase CLI v8.1.0 以降を使用とあるので、やっておいた方がいいと思います。(今回は古いままでも動作はしました)

firebase-toolsのバージョンを確認


firebase --version

最新のfirebase-toolsにアップデート


npm install -g firebase-tools

通常は上記の対応だけでいいと思いますが、私の環境の場合(Windows、PowerShell使用)、firebase-toolsのバージョンを「7.13.0」から「8.4.3」に上げると、デプロイ時に以下のエラーが発生しました。


firebase : このシステムではスクリプトの実行が無効になっているため、ファイル C:\Users\st40pg\AppDa
ta\Roaming\npm\firebase.ps1 を読み込むことができません。詳細については、「about_Execution_Polici 
es」(https://go.microsoft.com/fwlink/?LinkID=135170) を参照してください。
発生場所 行:1 文字:1
+ firebase deploy --only functions
+ ~~~~~~~~
    + CategoryInfo          : セキュリティ エラー: (: ) []、PSSecurityException
    + FullyQualifiedErrorId : UnauthorizedAccess

上記のエラーの原因はPowerShellでスクリプトの実行が無効になっているためで、以前のバージョンでなにもせずに実行できていた理由は不明(もしかしたら覚えてないだけで対応したかも)。

現在の制限タイプを確認


Get-ExecutionPolicy

対処方法は、Windows PowerShellを管理者権限で開いて、以下のコマンドを実行します。


Set-ExecutionPolicy RemoteSigned

ポリシーに設定できる値はいくつかあるので、自分の環境に合ったものを選択します。

PowerShell のスクリプトが実行できない場合の対処方法 - Qiita

アップグレードする際の注意点

Node.jsのバージョンを「10」にアップグレードする場合、プランを従量課金の「Blaze」に更新する必要があります。

最初は気づかなかったのですが、料金プランに注意事項として書いていました。

Firebase Pricing

できれば無料プラン(Spark)のままが良かったですが、従量制プラン(Blaze)には無料プランと同等の無料枠が用意されているので、更新したからといってすぐに課金されるわけではありません。

ただし、クレジットカードの登録は必要になるので、そこだけ注意が必要です。

Firebase】関連記事