Cloud Functionsのランタイム「Node.js」のアップグレード
FirebaseのCloud Functionsに久しぶりにアクセスしたら、ダッシュボードの画面に「Node.js 8 のサポートを終了しました。」と表示されていたので、ランタイムであるNode.jsのバージョンを「8」から「10」にアップグレードする方法。
目次
- ランタイム「Node.js 8」のサポート終了
- Node.jsのアップグレード
- firebase-toolsのバージョンアップ
- アップグレードする際の注意点
ランタイム「Node.js 8」のサポート終了
Node.jsのアップグレード
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
ポリシーに設定できる値はいくつかあるので、自分の環境に合ったものを選択します。
アップグレードする際の注意点
Node.jsのバージョンを「10」にアップグレードする場合、プランを従量課金の「Blaze」に更新する必要があります。
最初は気づかなかったのですが、料金プランに注意事項として書いていました。
できれば無料プラン(Spark)のままが良かったですが、従量制プラン(Blaze)には無料プランと同等の無料枠が用意されているので、更新したからといってすぐに課金されるわけではありません。
ただし、クレジットカードの登録は必要になるので、そこだけ注意が必要です。