Copyright (C) iPhoneアプリ開発備忘録 All rights reserved.
ブログ内で記したコード、内容の正確性は保証いたしません。
記載内容を実装したことにより発生した不具合・損害等の責任は一切負いません。



2024年05月15日

Google Cloud Functions のランタイム Node.jsをアップデートする



Google Cloud Functions のランタイム Node.jsは、セキュリティ更新ポリシーにより利用できるバージョンに有効期限が設定されている。

https://cloud.google.com/functions/docs/runtime-support?hl=ja

下記は、Google Cloud Functions のランタイム Node.jsをアップデートする手順。

1. ローカルPC側のNode.jsをアップデートする

http://iphone-app-developer.seesaa.net/article/503332042.html?1715753752

アップデートするNode.jsのバージョンは、Cloud Functions がサポートしているNode.jsのバージョンの最新版とすること。


2. ローカルPCからCloud Functionsにデプロイする
(0) PCを新しくした場合は、Firebase CLIがインストールされていないので、インストールする。
npm install -g firebase-tools

https://firebase.google.com/docs/cli?hl=ja#mac-linux-npm

(1) ターミナルでFirebaseの作業用フォルダに移動する。
デプロイする関数を定義している、index.jsが保存されているディレクトリに移動すること。
例:
/Users/(USER-NAME)/Documents/Firebase/CloudFunctions/(APP-NAME)/functions


(2) Firebaseにログインする。
firebase login


解析情報送信に関する応答メッセージに応答すると、ブラウザのウインドウが開き、Firebase CLIが起動する。
-bash: firebase: command not found
と表示されてfirebaseが起動できない場合、下記コマンドでPATHを設定し、再ログインする。
export PATH=$PATH:`npm prefix --location=global`/bin

https://dev.classmethod.jp/articles/how-to-pass-path-through-a-globally-installed-npm-package/


(3) ログインに成功し、「Firebase CLI Login Successful」と表示されたら、そのブラウザのウインドウを閉じる。

(4) 新しいNode.jsランタイムをデプロイする。
(4-1) 使用するNode.jsのバージョンを定義ファイルに指定してデプロイする。
(4-1)-1 package.jsonをエディタで開き、修正する。
Node.js 20に変更する場合:
"engines": {
"node": "20"
}

(4-1)-2 デプロイする。
firebase deploy --only functions

https://firebase.google.com/docs/cli?hl=ja#partial_deploys
https://firebase.google.com/docs/functions/callable?hl=ja&gen=2nd#objective-c

Deploy complete!
と表示されていたらOK。

(4-2) デプロイ時に下記エラーとなった場合、PCを新しくした場合は、Firebase環境を再構築する。
Cannot understand what targets to deploy/serve. No targets in firebase.json match '--only functions'.

(4-2)-1 Firebaseを初期化
firebase init functions


(4-2)-1 記述するコードの選択。
What language would you like to use to write Cloud Functions? -> JavaScript

(4-2)-2 ESLintは使用しない設定にする。
Do you want to use ESLint to catch probable bugs and enforce style? -> No

(4-2)-3 package.jsonを上書き更新する。
File functions/package.json already exists. Overwrite? -> Yes
事前に、package.jsonを複製しておき、更新前と更新後が比較できるようにしておくとよい。

(4-2)-4 index.js(関数を記述したソースコード)は上書き更新しない。
File functions/index.js already exists. Overwrite? -> No
誤って上書きしないように、必ず事前に複製してバックアップを取得すること。

(4-2)-5 gitignoreは上書き更新しない。
File functions/.gitignore already exists. Overwrite? -> No

(4-2)-6 npmで依存関係を今すぐインストールする設定にする。
Do you want to install dependencies with npm now? -> Yes

(4-2)-7 初期化完了の確認。
ターミナルに「Firebase initialization complete!」と表示されたらOK。

(5) デプロイ完了時、Project ConsoleのURLが表示されているので、コピー&ペーストでブラウザを開き、状況を確認する。

(6) Google Cloudコンソールをブラウザで開き、ログエクスプローラ画面でデプロイの状況を確認する。
Step #2 - "build": Using runtime version from GOOGLE_RUNTIME_VERSION: 20.12.2
Step #2 - "build": Installing Node.js v20.12.2.
Step #2 - "build": Runtime successfully downloaded from asia-northeast1-docker.pkg.dev/gae-runtimes/runtimes-ubuntu2204/nodejs:20.12.2
package.json で指定したNode.jsのバージョンがインストールされていればOK。

「要求されたプロジェクトとバンドル ID の APNS 証明書が見つかりません」というエラーが生じている場合、Firebase Cloud Messaging を使用していないのであれば、無視してOK。
mobilesdk-pa.googleapis.com e.v1.SettingsService.GetApnsAuthKey projects/xxxxx APNS cert not found for requested project and bundle ID


(7) Firebaseからログアウトする。
firebase logout


(8) SANDBOX、本番環境でテストを実施する。


(注)
Node.jsをバージョンアップする場合、環境変数の自動的に設定が変更される場合がある。
https://cloud.google.com/functions/docs/migrating/nodejs-runtimes?hl=ja
https://cloud.google.com/functions/docs/configuring/env-var?hl=ja#environment_variables_set_automatically


関連記事:
http://iphone-app-developer.seesaa.net/article/481766405.html
https://qiita.com/yum_fishing/items/8155bd7c1087d7cf15ad
posted by mobileDeveloper at 15:22 | Comment(0) | TrackBack(0) | その他 はてなブックマーク - Google Cloud Functions のランタイム Node.jsをアップデートする | このブログの読者になる | 更新情報をチェックする
この記事へのコメント
コメントを書く
お名前:

メールアドレス:

ホームページアドレス:

コメント:

認証コード: [必須入力]


※画像の中の文字を半角で入力してください。
※ブログオーナーが承認したコメントのみ表示されます。

この記事へのトラックバック
Apple、Appleのロゴ、App Store、iPodのロゴ、iTunesは、米国および他国のApple Inc.の登録商標です。
iPhone、iPod touch、iPadはApple Inc.の商標です。
iPhone商標は、アイホン株式会社のライセンスに基づき使用されています。
その他、本ブログに記載されている製品名、会社名は、それぞれ各社の商標または登録商標です。