初めに、根本的な解決策ではないので読むだけ無駄かもしれない。
起きた事
開発環境で問題なくビルドができたので、別サーバーで同じファイルを用意してビルドを行った。
そしたら Cannot find module 'v8-compile-cache' というエラーが起きた。
ビルドツールは webpack を使用。
単純に npm install v8-compile-cache をすればいいという話でもなく、
どこかのパッケージ内で必要なパッケージが見つからないというよく分からないエラーが起きた。
原因
nodebrew にて node のバージョンを v15x系 → v16x系 に引き上げた。
また、 package.json で管理しているパッケージのバージョンが古かったので全て最新にした。
メジャーバージョンを変更したパッケージもあった。
おそらく、このへんが原因なのではないかと思う。
解決策
冒頭にもあるけど、根本的な解決策ではなく、
単純に package-lock.json と node_modules を別の名前に変え、
新しい node_modules を用意し、 npm install から行った。
package-lock.json なしで npm install するのが中々怖かったけど、
開発環境でビルドできていたし、多分大丈夫だろうと判断した。
$ cd /path/to/your/project
# 名前を変更
$ mv package-lock.json _package-lock.json
$ mv node_modules _node_modules
# ディレクトリ作成
$ mkdir node_modules
# インストール
$ npm install
# ビルド
$ webpack --mode=production
# 上手くビルドできたら削除
$ rm -f _package-lock.json
$ rm -rf _node_modules
もしかしたら ci で解決してたかもしれない
$ cd /path/to/your/project
$ npm ci
$ webpack --mode=production