Cloudflare Pagesというサービスが世の中にはあります。実はこのサイトもお世話になっているサービスで、一ヶ月あたり本番環境へのビルドは500回まで無料、それ以外の環境へのテストビルドは無制限(2022/06/11時点)という太っ腹にもほどがあるサービスです。
公式サイトに「Cloudflare Pages is a JAMstack platform for frontend developers to collaborate and deploy websites.」と書いてある通り、近頃流行りのJAMstackなサイトに向けたサービスなのですが、Node.jsのバージョンがめちゃくちゃ古いせいでyarnに怒られてしまうことがあります。そのためこの問題の解決法を簡単に書いていこうと思います。
結論
環境変数にNODE_VERSION
をきちんと設定する。
詳しく
「Error: The module ~~~ was compiled against a different Node.js version using
」というエラーが、ローカル環境では動いているのに、Cloudflare Pagesでのビルド時だけ出てくるということがあります。このエラーは単純に「そのモジュールが異なるNode.jsのバージョン向けにコンパイルされているよ~」といったものです。そのため、Cloudflare Pagesに問題があるとすぐに分かるかと思います。
公式ヘルプを見るとNode.jsはデフォルトで「12.18.0
」となっています。2022年に普通にNode.jsを使用する方は最新版のv18系列か、LTSのv16系列を使用するかと思いますので、かなり古いものとなっています。
そのため自らが書いたモジュールはもちろん、npm/yarn経由でインストールしたパッケージが、古いものに対応していないがためにこの問題が発生すると考えられます。
どうにかする
解決方法は公式ヘルプに書いてある通りといえば書いてある通りです。以上の順で修正することが可能です。
- Cloudflareのダッシュボードへ行き、「Pages」を選択する。
- 問題となっているプロジェクトの設定画面を「詳細を表示」を押して開く
- 「ビルドの設定」をクリックする
- 環境変数を選択する
- 環境変数
NODE_VERSION
を追加する
NODE_VERSION
は適切な数字を入力してください。ローカル環境と同じものでいい場合は、ローカルにおいてnode -v
を実行して出てくる数字をそのまま入れればよいでしょう。
関連リンク
- Classmethodさんの記事「Cloudflare PagesでNode.jsのバージョンを指定する」 - 書き終わってから考えたら、この記事の先発である上に上位互換でいらっしゃる気がしてならない。
- Build configuration - Language support and tools - Cloudflareの公式ヘルプ。