EASYBOT GUIDE
Node.js Cannot find moduleの原因と解決方法
Cannot find moduleやERR_MODULE_NOT_FOUNDが出る時に、依存関係、起動場所、ファイル名、ES Modules設定を確認する方法を紹介します。
Node.jsのCannot find moduleは、指定したモジュールやファイルを実行環境が見つけられない時に発生します。依存パッケージ不足だけでなく、相対パスやLinuxの大文字・小文字違いも原因になります。
パッケージ不足を確認
エラーに出たモジュール名がnpmパッケージなら、package.jsonのdependenciesに登録されているか確認します。開発環境だけに入れていると、本番環境では見つからないことがあります。
- 本番実行に必要なものはdependenciesへ登録する
- package-lock.jsonをpackage.jsonと一緒に更新する
- node_modulesをZIPへ含めず環境内で導入する
ファイルパスと大文字小文字
Windowsでは通るパスがLinuxでは失敗することがあります。ファイル名、拡張子、相対パスの基準ディレクトリを実際のZIP内容と照合します。
- エラーに表示されたパスを確認する
- Main、main、indexの大文字小文字を照合する
- 起動時の作業ディレクトリを確認する
ES ModulesとCommonJS
package.jsonのtypeがmoduleの場合、import/exportの規則が適用されます。requireとの混在や拡張子の省略によって読み込みに失敗することがあるため、プロジェクト内で方式をそろえます。
- package.jsonのtypeを確認する
- importとrequireの使い分けをそろえる
- 相対importの拡張子を実行環境に合わせる
再インストールの前に
依存関係の再導入は時間とディスク容量を使います。まずエラーに出た名前と依存定義を調べ、毎回の再インストールが必要か確認してください。
- ログの最初のCannot find moduleを読む
- ロックファイルに依存が載っているか確認する
- キャッシュを無条件に消さず原因を切り分ける