Edited at

[webpack] [jest] Mac で動作するのに CI 環境だけ テストや ビルドが通らない

More than 1 year has passed since last update.

jenkins で jest を通そうとしたら、下記のようなエラーが発生。

  ● Test suite failed to run

Configuration error:

Could not locate module Core/api/server/BaseApi (mapped as /home/jenkins/workspace/bsr4b/BsrLib/src/js/core//api/server/BaseApi)
"resolver": undefined

webpack のビルドも通らない。


原因

jest, webpack, babel の問題かと色々調べたのですが、原因はとても初歩的でファイル名の大文字小文字違いでした。


Unix のような Mac OS X で 動作するのになぜ?

Mac は大文字、小文字をちゃんと区別してくれる OS だと思い込んでいたのでめっちゃくちゃハマりました。

Mac OSX の 拡張の大文字/小文字区別はEl Capitanだと使えない(Sierraも同様)

いつもまにか大文字小文字を区別しない OS になってました。

この勘違いがものすごい苦戦の原因になりました。


対策

何かしら対策のできるライブラリがないか検討したところ、下記のプラグインを webpack に追加することにしました。

case-sensitive-paths-webpack-plugin

大文字小文字がおかしいと 下記のようなエラーをはいてくれました。

ERROR in ./src/js/basic/Viewer.js

Module not found: Error: [CaseSensitivePathsPlugin] `/Users/kaoki/webapp/BSR4B_hybrid/src/js/basic/api/BasicAPI.js` does not match the corresponding path on disk `BasicApi.js`.

大文字小文字を区別って 英語で CaseSensitive Paths っていうのだと学びました。