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

Electron切换加载窗口与主窗口时出现ERR_FAILED (-2)加载错误如何解决

报错核心原因

该ERR_FAILED (-2)报错本质是Electron无法正常加载指定路径的loader.html文件,或异步逻辑冲突导致加载中断,可按以下步骤排查修复:

排查与修复方案

  1. 路径正确性验证
  • 确认loader.html实际存放路径和代码中拼接的路径一致:__dirname指向当前主进程JS文件所在的目录,若你的主进程代码存放在子目录(如src/main.js),拼接出来的路径会指向子目录内的loader.html,和实际存放位置不符就会报错。
  • 新增路径打印验证,在createLoaderWindow调用loadFile前添加代码:
console.log('loader.html路径:', path.join(__dirname, 'loader.html'))

运行后对比控制台输出的路径和文件实际路径是否完全匹配。

  • 兼容Windows路径转义问题,可改用path.normalize处理路径:
await loaderwin.loadFile(path.normalize(path.join(__dirname, 'loader.html')))
  1. 修复异步逻辑错误
    你的代码中调用createLoaderWindow时没有加await,异步函数未执行完成就执行后续的loaderwin.close(),会导致loaderwin未完成初始化就被销毁,引发加载中断。修改自执行函数中的对应代码:
// 原代码:mainWindow = createLoaderWindow()
// 修改为:
mainWindow = await createLoaderWindow()
  1. 调整窗口生命周期逻辑避免冲突
    你在loaderwin的closed事件中绑定了创建主窗口的逻辑,同时又在自执行函数中主动关闭加载窗口,会存在逻辑冗余,可优化加载流程提升体验:加载窗口显示后就并行预加载主窗口,异步任务执行完成后直接关闭加载窗口、显示已加载完成的主窗口,避免关闭加载窗口后出现空白等待期。
    修改后的核心代码示例:
const createLoaderWindow = async () => {
    loaderwin = new BrowserWindow({
        title: app.name,
        show: false,
        width: 600,
        height: 300,
        frame : false,
        webPreferences : {
            devTools : false
        }
    });

    loaderwin.on('ready-to-show', () => {
        loaderwin.show();
    });

    loaderwin.on('closed', () => {
        loaderwin = undefined;
    });

    const loaderPath = path.join(__dirname, 'loader.html');
    console.log('加载器路径:', loaderPath);
    await loaderwin.loadFile(loaderPath);

    return loaderwin;
}

(async () => {
    await app.whenReady();
    Menu.setApplicationMenu(null);
    // 等待加载窗口创建完成
    mainWindow = await createLoaderWindow();
    // 并行预加载主窗口,不阻塞异步任务执行
    const mainWinPromise = createMainWindow();
    // 执行初始化异步任务
    await syncfunct();
    require('./server.js')();
    // 等待主窗口加载完成
    const mainWin = await mainWinPromise;
    // 关闭加载窗口,显示主窗口
    loaderwin.close();
    mainWin.show();
})();
  1. 兜底排查方案
    如果路径确认无误仍报错,可临时将loaderwin的webPreferences.devTools设为true,打开加载窗口的控制台查看具体报错:如果是loader.html内部引用的CSS、JS等资源路径错误,也会触发该加载报错。

内容的提问来源于stack exchange,提问作者Juliver Galleto

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 14:57:03