🦔

Cloudflare PagesでNodeのバージョンを指定する

2023/03/26に公開

概要

Cloudflare Pagesを使ったStaticなWebページを作成した際に、Node.jsのバージョン問題に引っかかったので書き残します。

起きた事象

Pagesの画面からプロジェクトの作成を指定し、Gitに接続を指定します。

次にデプロイするリポジトリを指定して、 セットアップの開始を選択します。

今回は使用したリポジトリはこちらになります。
https://github.com/mori-hisayuki/cloudflare-hono-app

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-version16.19.1と指定します。

.node-version
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のチェックが必要かなと思います。

参照

Node.js リリース一覧
Build configuration

Discussion