Cloudflare PagesでNodeのバージョンを指定する
概要
Cloudflare Pagesを使ったStaticなWebページを作成した際に、Node.jsのバージョン問題に引っかかったので書き残します。
起きた事象
Pagesの画面からプロジェクトの作成
を指定し、Gitに接続
を指定します。
次にデプロイするリポジトリを指定して、 セットアップの開始
を選択します。
今回は使用したリポジトリはこちらになります。
Hono
というフレームワークを使用したサンプルになりますが、このHono
はNode.jsのバージョンv16
以上となります。
ビルド用のコマンドとビルド結果を出力するディレクトリを指定します。
この様にNode.jsのバージョンが古いということでエラーになりました。
対応しているバージョンについて
Node.jsについては指定をしていない場合、Default version
である12.18.0
がビルド時に使用されます。
そのため12.18.0
以上のバージョンが必要なdependencies
がある場合はバージョンを上げる必要があります。
また、上限も決められておりNode.jsの場合は17.x
までとなっています。
バージョンの変え方
1. Cloudflare Pagesの環境変数に登録する
先程失敗したプロジェクトを指定します。
設定→環境変数から、NODE_VERSION
という環境変数を追加します。
今回は16.19.1
を指定します。
再ビルドをすると、使用しているNode.jsのバージョンが先程NODE_VERSION
に設定したバージョンに変更されています。
2. ローカルファイルに環境変数を指定する
rootディレクトリに.nvmrc
、または.node-version
のファイルを作成し、任意のNode.jsのバージョンを指定します。
今回は.node-version
に16.19.1
と指定します。
16.19.1
ファイルがあるGithub Repositoryを連携させてビルドすると指定したNode.jsのバージョンでビルドがされます。
この様に.node-version
ファイルからバージョンが指定されていることがビルドログにも表示されます。
まとめ
Node.jsのDefaultVersionが12.18.0
と、かなり古いと思います。
なのでGitと連携でのデプロイの場合は、ほぼ自分で指定したほうがよいのかなとは思います。
ちなみにWrangler CLI
を使ったデプロイはGit連携ではなく、自分の開発環境でビルドします。
なので現状対応していない18.x
系のNode.jsでビルドしてデプロイすることも可能です。
ただし、Git連携ではないということはGitにPushしたとしても自動デプロイはされません。
プリインストールされているのはNode.jsだけではないので、Git連携での自動デプロイ使用時には適宜Build configurationのチェックが必要かなと思います。
Discussion