MeWrite Docs

Vite: ENOENT deps_temp rename failed

Viteの依存関係最適化でdeps_tempディレクトリのリネームが失敗するエラー

概要

Viteの開発サーバー起動時や依存関係の最適化処理中に、node_modules/.vite/deps_tempdepsにリネームする際に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)

原因

  1. レースコンディション: 複数のViteプロセスが同時に依存関係を最適化しようとする
  2. ファイルシステムの遅延: ディレクトリ作成と使用のタイミングが競合
  3. ウイルス対策ソフト: リアルタイムスキャンがファイル操作をブロック
  4. モノレポ環境: 複数のパッケージが同じ依存関係を最適化
  5. Docker/WSL: ファイルシステムのマウントによる遅延

解決策

1. キャッシュをクリア(最も簡単)

1
2
3
4
5
# node_modules/.viteを削除
rm -rf node_modules/.vite

# 開発サーバーを再起動
npm run dev

2. force オプションで再最適化

1
2
3
4
5
# 強制的に依存関係を再最適化
npx vite --force

# または
npx vite optimize --force

3. vite.config.jsでキャッシュディレクトリを変更

1
2
3
4
5
6
7
// vite.config.js
import { defineConfig } from 'vite';
import path from 'path';

export default defineConfig({
  cacheDir: path.resolve(__dirname, '.vite-cache'),
});

4. 依存関係の事前バンドルを無効化(開発時)

1
2
3
4
5
6
// vite.config.js
export default defineConfig({
  optimizeDeps: {
    disabled: true, // 開発時のみ
  },
});

5. ロックファイルを使用(モノレポ対応)

1
2
3
4
5
6
// vite.config.js
export default defineConfig({
  optimizeDeps: {
    holdUntilCrawlEnd: true,
  },
});

6. 特定の依存関係を除外

1
2
3
4
5
6
// vite.config.js
export default defineConfig({
  optimizeDeps: {
    exclude: ['problematic-package'],
  },
});

7. ウイルス対策ソフトの除外設定

# 以下のディレクトリをリアルタイムスキャンから除外
- node_modules/
- node_modules/.vite/
- プロジェクトディレクトリ全体(推奨)

8. Docker/WSL環境の場合

1
2
3
4
5
6
7
8
# docker-compose.yml
services:
  app:
    volumes:
      # node_modules を名前付きボリュームに
      - node_modules:/app/node_modules
volumes:
  node_modules:
1
2
3
4
5
6
7
8
// vite.config.js(WSL環境)
export default defineConfig({
  server: {
    watch: {
      usePolling: true,
    },
  },
});

9. npmスクリプトで事前クリア

1
2
3
4
5
6
7
{
  "scripts": {
    "dev": "rm -rf node_modules/.vite && vite",
    "dev:clean": "npm run clean:cache && vite",
    "clean:cache": "rm -rf node_modules/.vite"
  }
}

10. Viteをアップグレード

1
2
# 最新版にアップグレード(バグ修正が含まれている可能性)
npm install vite@latest

よくある間違い

  • エラー発生時に単純にコマンドを再実行し続ける
  • モノレポで複数のdevサーバーを同時に起動する
  • Dockerでホストのnode_modulesをマウントする
  • ウイルス対策ソフトの影響を考慮しない

関連エラー

参考リンク

JavaScript の他のエラー

最終更新: 2025-12-13