Vite: ENOENT deps_temp rename failed
Viteの依存関係最適化でdeps_tempディレクトリのリネームが失敗するエラー
概要
Viteの開発サーバー起動時や依存関係の最適化処理中に、node_modules/.vite/deps_tempをdepsにリネームする際にENOENTエラーが発生する問題です。レースコンディションやファイルシステムの競合が原因で、特にモノレポ環境や複数のViteプロセスが同時に実行される場合に発生しやすいです。
エラーメッセージ
ENOENT: no such file or directory, rename '/project/node_modules/.vite/deps_temp_xxxxx' -> '/project/node_modules/.vite/deps'
または:
Error: ENOENT: no such file or directory, rename 'node_modules/.vite/deps_temp' -> 'node_modules/.vite/deps'
at Object.renameSync (node:fs:xxx)
原因
- レースコンディション: 複数のViteプロセスが同時に依存関係を最適化しようとする
- ファイルシステムの遅延: ディレクトリ作成と使用のタイミングが競合
- ウイルス対策ソフト: リアルタイムスキャンがファイル操作をブロック
- モノレポ環境: 複数のパッケージが同じ依存関係を最適化
- Docker/WSL: ファイルシステムのマウントによる遅延
解決策
1. キャッシュをクリア(最も簡単)
| |
2. force オプションで再最適化
| |
3. vite.config.jsでキャッシュディレクトリを変更
| |
4. 依存関係の事前バンドルを無効化(開発時)
| |
5. ロックファイルを使用(モノレポ対応)
| |
6. 特定の依存関係を除外
| |
7. ウイルス対策ソフトの除外設定
# 以下のディレクトリをリアルタイムスキャンから除外
- node_modules/
- node_modules/.vite/
- プロジェクトディレクトリ全体(推奨)
8. Docker/WSL環境の場合
| |
| |
9. npmスクリプトで事前クリア
| |
10. Viteをアップグレード
| |
よくある間違い
- エラー発生時に単純にコマンドを再実行し続ける
- モノレポで複数のdevサーバーを同時に起動する
- Dockerでホストのnode_modulesをマウントする
- ウイルス対策ソフトの影響を考慮しない
関連エラー
参考リンク
JavaScript の他のエラー
この記事は役に立ちましたか?