環境
name | version |
---|---|
Windows11 | 23H2 |
tsc | 5.4.5 |
node | 20.9.0 |
npm/npx | 10.5.1 |
electron | 27.0.3 |
electron-builder | 24.13.3 |
問題
electron コマンドで実行した際には正常に動くのに、electron-builder でビルドして実行すると cannot find module となり困っていた。
tsc 並びに electron コマンドが通るので、もちろんファイル名は正しい(つもりだった)。
Error:Cannot find module
require 文で Cpu.class.js モジュールが見つからない。
原因と解決
以下、コンパイルは tsc によるもの。
hoge.ts をコンパイル後、Hoge.ts (先頭大文字)にリネームしたことが原因だった。
リネーム後再度コンパイルしても、hoge.js が更新されるだけで Hoge.js は生成されない。
一度 hoge.js を削除してからコンパイルすれば Hoge.js が生成される。
root/
├ Hoge.ts
└ hoge.js
こういう構成のとき困るという話
また、tsc は.ts ファイルを見てモジュールが存在するかどうか判断する。
そのため Hoge.ts と hoge.js がある状態だと、"Hoge"を import しないと警告が出る。(tsconfig の forceConsistentCasingInFileNames が true の場合)
しかし、コンパイル後には"hoge"モジュールである。ややこしや~