数ヶ月ぶりに記事を投稿したところ、Vercelから「デプロイに失敗しました」という内容のメールが届きました。
Vercelにアクセスしてログを確認すると、以下のようなエラーが出力されていました。
Error: Node.js Version "12.x" is discontinued and must be upgraded. Please set Node.js Version to 18.x in your Project Settings to use Node.js 18.
どうやら 12.x はサポートが終了したようです。
詳しく調べてみると、2022/10/03 にサポート終了の告知が公式ブログでなされていたようです。
On October 3rd 2022, Node.js 12 will be disabled in the Project Settings and existing Projects that have Node.js 12 selected will render an error whenever a new Deployment is created. The same error will show if the Node.js version was configured in the source code.Node.js 12 is being deprecated
Node.js 12 is being deprecated – Vercel
この機会に 18.x にアップデートしてみます。
Node.jsのアップデート
まず、ローカル環境の Node.js を 18.x に更新してみます。
私の環境ではバージョン管理ツール Nodenv を使用しているため、
以下の方法は参考にならない可能性があります。
それぞれの構築方法に合わせてアップデートを行ってください。
まず、Nodenvからインストールできるバージョンを確認します。
$nodenv install -l
18.x の中で最もバージョンが新しい、18.12.0 をインストールすることにしました。
以下のコマンドを実行してインストールを行います。
$nodenv install 18.12.0
$nodenv rehash
正常にインストールできているか確認します。リストに 18.12.0が表示されれば成功しています。
$nodenv versions
* 12.22.12
18.12.0
普段は 12.x で開発を行っているため、当ブログの開発にのみ使用するように設定します。
全体で使用したい場合は $nodenv global XX.XX.XX
というコマンドを実行してください。
$nodenv local 18.12.0
ルートディレクトリにバージョンのみ記載された .node-versions というファイルが作成されれば成功です。
18.12.0
パッケージのアップデート
アップデートが完了したのでパッケージのインストール後に起動してみましたが、
12.x で動作するよう構成されているため、エラーが出力されて動作しませんでしたので、
インストールされているパッケージのアップデートを行います。
私の環境では yarn v1 を使用してアップデートを行いました。npm-check-updates
というパッケージをインストールします。
インストールされているパッケージの一括アップデートが可能となります。
$yarn add npm-check-updates
続いて以下のコマンドを実行します。
アップデートが必要なパッケージがリストアップされます。
$yarn ncu
続いて以下のコマンドを実行し、アップデートを行います。
$yarn ncu -u
成功すると package.json が書き換わります。
再度パッケージのインストールを実行します。
$yarn install
インストールが完了後、next.js を起動してみます。
エラーが出力されなくなったのでアップデート作業は完了です。
$yarn dev
Vercelで使用するNode.jsのバージョンを変更する
最後にVercelで使用するNode.jsのバージョンを変更します。これは管理画面から変更が可能です。
バージョンを変更したいプロジェクトにアクセス後、Setting をクリックしてください。
General の Node.js Version の値を 18.X に設定すれば作業は完了です。