【TypeScript】エラー対応→Error TS1149: File name ‘Filename.ts’ differs from already included file name ‘FileName.ts’ only in casing.
TypeScriptとか使って、 npm run すると以下のエラーが出てくるときがある。
1 |
File name '/resources/model/category/SubcategoryId.ts' differs from already included file name '/resources/model/category/SubCategoryId.ts' only in casing. |
直訳すると
ファイル名「/resources/model/category/SubcategoryId.ts」は、既に含まれているファイル名「/resources/model/category/SubCategoryId.ts」と大文字と小文字のみが異なります。
となっているので、ああ・・subcategoryのcが大文字と小文字で違うのかー。
どこか、importする時にcを大文字で入力忘れた箇所あったのかなーと、最初は考えました。
要するに、tsconfig.jsonファイルで、” forceConsistentCasingInFileNames": true と指定しているので、ファイルの大文字小文字の違いエラーだと思ったわけです。
ただ、全てのimport箇所を確認してもSubcategoryと間違って書いているところはない・・。
しかも、普通なら、間違って名前指定している箇所の行数がエラーにでてくるはずなのに、出てこない。。
もしや、と思いつつ、dockerコンテナの中に入ってみると・・・
Subcategoryと、SubCategory2つのファイルがある・・・。
もちろん、ホスト側にはファイルは一つしかありません。
docker-sync使用時のファイルorディレクトリリネームにご注意!
どうやら、ファイル名をSubcategory→SubCategoryに変更した際、前のファイルもそのまま残ってしまっていた模様・・。
おそらくdocker-syncを使っている時だけこういう自体が起こる気がします。
docker-sync使用している時は、ファイル名変更に注意するしかない!
最後に・・・このままdockerコンテナ上で、Subcategoryを削除したり、Subcategory→SubCategoryにmvしたりすると、ホスト側のファイルが消えてしまったので、削除の前にホスト側のファイル退避はしておいたほうが良いです。
この記事がお役に立てたら、是非シェアをお願いします^^