docs: update electron build instructions and fix electron asset paths

- Add web build prerequisite step to electron build docs
- Update electron run command to use npx
- Fix electron asset loading with improved path handling
- Add request interception for proper asset resolution
- Remove service worker files from electron build
- Improve debug logging for electron builds
This commit is contained in:
Matthew Raymer
2025-02-13 06:43:54 +00:00
parent ab29e82274
commit 01365d478c
3 changed files with 64 additions and 4 deletions

View File

@@ -24,6 +24,46 @@ function createWindow() {
},
});
// Always open DevTools for now
mainWindow.webContents.openDevTools();
// Intercept requests to fix asset paths
mainWindow.webContents.session.webRequest.onBeforeRequest(
{
urls: [
"file://*/*/assets/*",
"file://*/assets/*",
"file:///assets/*", // Catch absolute paths
"<all_urls>", // Catch all URLs as a fallback
],
},
(details, callback) => {
let url = details.url;
console.log("Intercepting asset request:", url);
// Handle paths that don't start with file://
if (!url.startsWith("file://") && url.includes("/assets/")) {
url = `file://${path.join(__dirname, "www", url)}`;
}
// Handle absolute paths starting with /assets/
if (url.includes("/assets/") && !url.includes("/www/assets/")) {
const baseDir = url.includes("dist-electron")
? url.substring(
0,
url.indexOf("/dist-electron") + "/dist-electron".length,
)
: `file://${__dirname}`;
const assetPath = url.split("/assets/")[1];
const newUrl = `${baseDir}/www/assets/${assetPath}`;
console.log("Redirecting to:", newUrl);
callback({ redirectURL: newUrl });
return;
}
callback({}); // No redirect for other URLs
},
);
// Debug info
console.log("Debug Info:");
console.log("Running in dev mode:", isDev);
@@ -34,6 +74,7 @@ function createWindow() {
console.log("process.cwd():", process.cwd());
const indexPath = path.join(__dirname, "www", "index.html");
console.log("Loading index from:", indexPath);
console.log("www path:", path.join(__dirname, "www"));
console.log("www assets path:", path.join(__dirname, "www", "assets"));