テクノロジー · 実用ガイド
Node の ERR_REQUIRE_ESM?モジュール設定を変える前に実行時の呼び出し元を追跡
ソースが import でも、出力 JavaScript、依存関係、テストランナーが require() を呼ぶ場合があります。実行時境界を証明してから、ESM 移行、動的 import、審査済みの一時固定を選びます。

ERR_REQUIRE_ESM は実行時の形式境界を示します。TypeScript、Babel、Vite、Electron、Jest、推移依存が require() を生成するため、実行行はソースと違うことがあります。
最初のスタック、Node 版、実行された JavaScript を保存してから package.json を変更します。
実行時証拠を固定する
スタック、コマンド、作業ディレクトリ、Node とパッケージマネージャー、lockfile を保存し、対象 ESM と最初の外部でない呼び出し元を示します。
node_modules や lockfile を先に削除すると、失敗した依存グラフを失います。
実際の出力を調べる
dist、out、build、Electron bundle の該当行が require() か確認します。
TypeScript の module、moduleResolution、拡張子、最寄りの package.json type を記録します。
境界と依存所有者を特定
lockfile と依存ツリーで版を確定し、自社、直接依存、推移依存のどこが CommonJS 呼び出しを所有するか確認します。
Node 版も保存します。ランタイム回帰やトップレベル await は ESM-only 更新と別問題です。
一つの修復経路を選ぶ
移行可能なら境界、出力、相対拡張子、入口を一緒に直します。CommonJS を維持するなら非同期化できる所有境界に dynamic import を置きます。
依存内部なら対応上流版を優先し、一時固定には理由、リスク、解除日を記録します。
同じ境界で検証
古い出力を消して再構築し、lockfile を勝手に変えず、require が消えたか正しい export が返るか確認します。
同じ Node 版で元のコマンド、テスト、本番入口を実行し、依存ツリーと出力断片を保存します。
