From ae68eb09c4b26b9129969b79fc1eacc0f312c1d1 Mon Sep 17 00:00:00 2001 From: Padreug Date: Sat, 2 May 2026 14:56:58 +0200 Subject: [PATCH] fix(vite): give each app its own cacheDir to stop dep-race 504s MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit VitePWA-disabled was supposed to fix stale dev artefacts but each of the 8 vite servers was still sharing one node_modules/.vite/deps directory. Concurrent dep optimization runs (any of: server restart, config edit, new import) raced for that single cache, producing intermittent 504 "Outdated Optimize Dep" responses for hashes the requesting tab still held — followed by Vue Router "Failed to fetch dynamically imported module" cascades when the victim was a route component (e.g., MarketPage.vue). Each app now has its own cache dir: hub node_modules/.vite-hub castle node_modules/.vite-castle activities node_modules/.vite-activities wallet node_modules/.vite-wallet chat node_modules/.vite-chat forum node_modules/.vite-forum market node_modules/.vite-market tasks node_modules/.vite-tasks Set via vite's `cacheDir` option in each config. No more racing. .gitignore already covers node_modules so the new dirs are ignored automatically. Co-Authored-By: Claude Opus 4.7 (1M context) --- vite.activities.config.ts | 2 ++ vite.castle.config.ts | 2 ++ vite.chat.config.ts | 2 ++ vite.config.ts | 2 ++ vite.forum.config.ts | 2 ++ vite.market.config.ts | 2 ++ vite.tasks.config.ts | 2 ++ vite.wallet.config.ts | 2 ++ 8 files changed, 16 insertions(+) diff --git a/vite.activities.config.ts b/vite.activities.config.ts index 8131615..aea9915 100644 --- a/vite.activities.config.ts +++ b/vite.activities.config.ts @@ -40,6 +40,8 @@ function activitiesHtmlPlugin(): Plugin { */ export default defineConfig(({ mode }) => ({ base: process.env.VITE_BASE_PATH || '/', + // Per-app dep cache so concurrent dev servers don't race on .vite/deps + cacheDir: 'node_modules/.vite-activities', server: { port: 5181, strictPort: true, diff --git a/vite.castle.config.ts b/vite.castle.config.ts index d8d2797..d0916eb 100644 --- a/vite.castle.config.ts +++ b/vite.castle.config.ts @@ -40,6 +40,8 @@ function castleHtmlPlugin(): Plugin { */ export default defineConfig(({ mode }) => ({ base: process.env.VITE_BASE_PATH || '/', + // Per-app dep cache so concurrent dev servers don't race on .vite/deps + cacheDir: 'node_modules/.vite-castle', server: { port: 5180, strictPort: true, diff --git a/vite.chat.config.ts b/vite.chat.config.ts index c5b00ac..6965d08 100644 --- a/vite.chat.config.ts +++ b/vite.chat.config.ts @@ -35,6 +35,8 @@ function chatHtmlPlugin(): Plugin { */ export default defineConfig(({ mode }) => ({ base: process.env.VITE_BASE_PATH || '/', + // Per-app dep cache so concurrent dev servers don't race on .vite/deps + cacheDir: 'node_modules/.vite-chat', server: { port: 5183, strictPort: true, diff --git a/vite.config.ts b/vite.config.ts index 716dad6..fd07bc1 100644 --- a/vite.config.ts +++ b/vite.config.ts @@ -9,6 +9,8 @@ import { visualizer } from 'rollup-plugin-visualizer' // https://vite.dev/config/ export default defineConfig(({ mode }) => ({ + // Per-app dep cache so concurrent dev servers don't race on .vite/deps + cacheDir: 'node_modules/.vite-hub', server: { port: 5173, strictPort: true, diff --git a/vite.forum.config.ts b/vite.forum.config.ts index feeea35..756d5c1 100644 --- a/vite.forum.config.ts +++ b/vite.forum.config.ts @@ -35,6 +35,8 @@ function forumHtmlPlugin(): Plugin { */ export default defineConfig(({ mode }) => ({ base: process.env.VITE_BASE_PATH || '/', + // Per-app dep cache so concurrent dev servers don't race on .vite/deps + cacheDir: 'node_modules/.vite-forum', server: { port: 5184, strictPort: true, diff --git a/vite.market.config.ts b/vite.market.config.ts index 5a1a5fe..255d8c0 100644 --- a/vite.market.config.ts +++ b/vite.market.config.ts @@ -35,6 +35,8 @@ function marketHtmlPlugin(): Plugin { */ export default defineConfig(({ mode }) => ({ base: process.env.VITE_BASE_PATH || '/', + // Per-app dep cache so concurrent dev servers don't race on .vite/deps + cacheDir: 'node_modules/.vite-market', server: { port: 5185, strictPort: true, diff --git a/vite.tasks.config.ts b/vite.tasks.config.ts index c939772..3cb15fd 100644 --- a/vite.tasks.config.ts +++ b/vite.tasks.config.ts @@ -35,6 +35,8 @@ function tasksHtmlPlugin(): Plugin { */ export default defineConfig(({ mode }) => ({ base: process.env.VITE_BASE_PATH || '/', + // Per-app dep cache so concurrent dev servers don't race on .vite/deps + cacheDir: 'node_modules/.vite-tasks', server: { port: 5186, strictPort: true, diff --git a/vite.wallet.config.ts b/vite.wallet.config.ts index 31b2a1d..dfa0bd6 100644 --- a/vite.wallet.config.ts +++ b/vite.wallet.config.ts @@ -39,6 +39,8 @@ function walletHtmlPlugin(): Plugin { */ export default defineConfig(({ mode }) => ({ base: process.env.VITE_BASE_PATH || '/', + // Per-app dep cache so concurrent dev servers don't race on .vite/deps + cacheDir: 'node_modules/.vite-wallet', server: { port: 5182, strictPort: true,