From 113601f03185f1816112e402969d361174f2c4ef Mon Sep 17 00:00:00 2001 From: AzuTear Date: Mon, 6 Jul 2026 08:11:34 +0200 Subject: [PATCH] fix(electron): point main + preload + index paths at the real build layout npm run dev failed with ERR_MODULE_NOT_FOUND for dist-electron/services/inputHelper. Root cause: the electron program includes src runtime files (repositories, layoutProfile, ocrPreprocess), so tsc's inferred rootDir is the project root and it emits the entry at dist-electron/electron/main.js (with src at dist-electron/src). package.json "main" still pointed at a stale flat dist-electron/main.js fossil from an older build layout, whose extensionless imports don't resolve under NodeNext ESM. - package.json main -> dist-electron/electron/main.js. - predev/build copy preload.cjs into dist-electron/electron/ (next to main.js, where main.ts resolves it via __dirname). - main.ts loads ../../dist/index.html (one level deeper now) for the packaged window + overlay. Verified: clean electron build emits only the nested layout; electron . loads the main process past module resolution (only ERR_CONNECTION_REFUSED for the dev server, expected standalone); npm run build green. Co-Authored-By: Claude Opus 4.8 --- electron/main.ts | 4 ++-- package.json | 6 +++--- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/electron/main.ts b/electron/main.ts index 3196bb6..e2391e6 100644 --- a/electron/main.ts +++ b/electron/main.ts @@ -394,7 +394,7 @@ function createMainWindow() { if (isDev) { mainWindow.loadURL(process.env.VITE_DEV_SERVER_URL!); } else { - mainWindow.loadFile(path.join(__dirname, "../dist/index.html")); + mainWindow.loadFile(path.join(__dirname, "../../dist/index.html")); } } @@ -528,7 +528,7 @@ function createOverlayWindow() { if (isDev) { overlayWindow.loadURL(`${process.env.VITE_DEV_SERVER_URL!}?overlay=1`); } else { - overlayWindow.loadFile(path.join(__dirname, "../dist/index.html"), { + overlayWindow.loadFile(path.join(__dirname, "../../dist/index.html"), { query: { overlay: "1" }, }); } diff --git a/package.json b/package.json index ddf1deb..612f525 100644 --- a/package.json +++ b/package.json @@ -3,14 +3,14 @@ "version": "0.1.0", "private": true, "description": "Local Windows assistant for scanning Genshin artifacts and suggesting no-brainer builds.", - "main": "dist-electron/main.js", + "main": "dist-electron/electron/main.js", "type": "module", "scripts": { - "predev": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\kill-stale-instances.ps1 && tsc -p tsconfig.electron.json && copy electron\\preload.cjs dist-electron\\preload.cjs", + "predev": "powershell -NoProfile -ExecutionPolicy Bypass -File scripts\\kill-stale-instances.ps1 && tsc -p tsconfig.electron.json && copy electron\\preload.cjs dist-electron\\electron\\preload.cjs", "dev": "concurrently -k \"vite --host 127.0.0.1\" \"wait-on tcp:5173 && cross-env VITE_DEV_SERVER_URL=http://127.0.0.1:5173 electron .\"", "dev:web": "vite --host 127.0.0.1", "dev:admin": ".\\dev-admin.cmd", - "build": "tsc && vite build && tsc -p tsconfig.electron.json && copy electron\\\\preload.cjs dist-electron\\\\preload.cjs", + "build": "tsc && vite build && tsc -p tsconfig.electron.json && copy electron\\\\preload.cjs dist-electron\\\\electron\\\\preload.cjs", "preview": "vite preview --host 127.0.0.1", "start": "electron .", "lint": "tsc --noEmit",