先日、分かってみればしょうもない原因でどハマリしたため、悲しみの覚え書きを投稿します。
結論だけ知りたい人へ
git管理下のファイルをリネームするときはgit mv
を使おう。
vscodeの人はgit renameを使うと便利。
事象
リファクタ目的でファイル名、フォルダ名をリネームしたところ、
ローカル環境ではビルドが成功するのに、CI(GitHubActions)上ではビルドに失敗した。
- ローカルでは動作確認問題なし
- ローカル、CIともにビルドコマンドは
vue-cli-service build --mode production
- CI上のビルドにて以下のエラーが出た
- Building for production...
Starting type checking service...
Using 1 worker with 2048MB memory limit
ERROR Failed to compile with 33 errors10:53:22 AM
These dependencies were not found:
ERROR Build failed with errors.
* @/src/something in ./node_modules/cache-loader/dist/cjs.js??ref--14-0!./node_modules/thread-loader/dist/cjs.js!./node_modules/babel-loader/lib!./node_modules/ts-loader??ref--14-3!./node_modules/cache-loader/dist/cjs.js??ref--0-0!./node_modules/vue-loader/lib??vue-loader-options!./src/components/index.vue?vue&type=script&lang=ts&
(以降、いろんなファイルで同様のエラーが表示される)
原因
git管理上のファイルをリネームしていなかったこと。
vscodeからリネームをしたところ、一部のファイルはgitにリネームが反映されていなかった。
(実ファイルはリネームできているし、git上にリネームが反映されているファイルもありました。vscodeの問題なのか、作業途中でstashしたとかその辺の影響なのかは切り分けできていません)
実ファイルはすべてリネームされているため、ローカルのビルドは成功します。
しかし、git管理上はリネーム漏れがあるため、CI上で改めてcheckout -> buildとするとビルドエラーになる、という事象でした。
対策
- git管理下のファイルをリネームするときは
git mv
を使おう。 - vscodeのエクステンションgit renameを使うと便利。
- git statusをちゃんと見よう。
最後に
ローカルとgitは同じ、という思い込みに気付けず、調査は難航しました。
同僚に相談したところ速攻で解決し、相談って大事だなと改めて思いました。
調査の過程でvueのビルド設定の確認方法(npx vue-cli-service inspect
)を知れたのは、ひとつ収穫でした。