😇

git config core.ignorecaseをfalseにしなかったせいでCloudflare Pagesのデプロイに失敗した

2024/02/25に公開

概要

Next.js製の静的サイトをCloudflare Pagesでデプロイしようとした際、一部のコンポーネントがModule Not Foundとなり、ビルドが失敗しました。
ローカルでビルドするときは成功していました。

原因

git config core.ignorecasetrueに設定されていたため、ディレクトリの大文字小文字の変更をgitが差分として認識しなかったためです。

詳細

git config core.ignorecaseはgitが大文字と小文字を区別するかの設定で、trueなら区別せず、falseなら区別します。
trueの場合、例えば下記の流れで作業すると、想定しているディレクトリ構造ではなくなってしまいます。

  1. components/hogeHoge.jsxを作成してコミット
  2. components/Hogeにディレクトリ名を変更し、Hoge.jsxもいろいろ修正してコミット

つまり2ではcomponents/Hoge/Hoge.jsxが差分として取り込まれているのではなく、ディレクトリ名の変更が検知されないので、components/hoge/Hoge.jsxとしてコミットされた、ということだと思われます。

ローカルでビルドが成功していたのは、マシンの環境によって大文字と小文字を区別しないので、自分のローカルマシン上では問題なくパスが通っていたからだと考えられます。

コンポーネントのディレクトリ名を大文字と小文字どちらにしようか悩んでコロコロ変えていた時期があったので、それが今回の問題を誘発してしまったようです。

Discussion