You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron-Forge搭配SvelteKit打包后白屏问题求助

Electron-SvelteKit打包后白屏问题修复方案

核心问题诊断

开发正常但打包后白屏,主要源于生产环境资源路径配置错误、SvelteKit静态适配逻辑不匹配,以及Electron加载逻辑冲突。以下是针对性修复步骤:


1. 修正Electron生产环境资源加载路径

你的electron.cjs中,electron-serve的目录指向错误,同时加载逻辑存在冗余判断,导致无法正确读取打包后的SvelteKit资源。

修改electron.cjs:

// 替换原serveURL定义,指向SvelteKit打包目录
const serveURL = serve({ directory: './build' });

// 重写createMainWindow函数,统一加载逻辑
function createMainWindow() {
    mainWindow = createWindow();
    mainWindow.once('close', () => {
        mainWindow = null;
    });

    if (dev) {
        loadVite(port);
    } else {
        // 直接加载打包后的本地index.html,适配Electron打包后的路径结构
        const appURL = url.format({
            pathname: path.join(__dirname, 'index.html'),
            protocol: 'file:',
            slashes: true
        });
        mainWindow.loadURL(appURL);
    }
}

2. 完善SvelteKit静态适配器配置

使用adapter-static时,需确保预渲染和路径配置适配Electron本地文件环境:

修改svelte.config.cjs:

import adapter from '@sveltejs/adapter-static';
import { vitePreprocess } from '@sveltejs/kit/vite';

const config = {
    preprocess: vitePreprocess(),
    kit: {
        adapter: adapter({
            fallback: '/index.html'
        }),
        // 适配Electron本地加载,确保资源路径正确
        paths: {
            base: ''
        },
        // 确保首页被预渲染,避免白屏
        prerender: {
            entries: ['/']
        }
    }
};

export default config;

3. 验证Electron Forge打包配置

当前forge.config.cjs中packagerConfig.dir: './build'的配置是正确的,确保打包时会将SvelteKit的构建产物作为Electron应用的资源目录,无需修改。


4. 调试排查技巧

若修复后仍白屏,可临时开启生产环境DevTools定位具体错误:
在electron.cjs的createWindow函数中修改webPreferences:

webPreferences: {
    // ...其他配置
    devTools: true // 临时开启,打包后查看控制台的资源加载/JS报错
}

常见错误包括:资源路径404、JS语法错误、上下文隔离配置冲突等。

内容的提问来源于stack exchange,提问作者Craig Howell

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.06 23:40:32