😇
git config core.ignorecaseをfalseにしなかったせいでCloudflare Pagesのデプロイに失敗した
概要
Next.js製の静的サイトをCloudflare Pagesでデプロイしようとした際、一部のコンポーネントがModule Not Foundとなり、ビルドが失敗しました。
ローカルでビルドするときは成功していました。
原因
git config core.ignorecase
がtrue
に設定されていたため、ディレクトリの大文字小文字の変更をgitが差分として認識しなかったためです。
詳細
git config core.ignorecase
はgitが大文字と小文字を区別するかの設定で、true
なら区別せず、false
なら区別します。
true
の場合、例えば下記の流れで作業すると、想定しているディレクトリ構造ではなくなってしまいます。
-
components/hoge
にHoge.jsx
を作成してコミット -
components/Hoge
にディレクトリ名を変更し、Hoge.jsx
もいろいろ修正してコミット
つまり2ではcomponents/Hoge/Hoge.jsx
が差分として取り込まれているのではなく、ディレクトリ名の変更が検知されないので、components/hoge/Hoge.jsx
としてコミットされた、ということだと思われます。
ローカルでビルドが成功していたのは、マシンの環境によって大文字と小文字を区別しないので、自分のローカルマシン上では問題なくパスが通っていたからだと考えられます。
コンポーネントのディレクトリ名を大文字と小文字どちらにしようか悩んでコロコロ変えていた時期があったので、それが今回の問題を誘発してしまったようです。
Discussion