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

Electron-updater集成electron-log报错及自定义更新对话框问题排查

问题排查与解决

TypeScript 错误修复

错误原因

你导入的 log 只是 electron-log 的日志函数,而非完整的 Logger 实例,导致无法访问 transports 属性,也无法满足 autoUpdater.logger 对 Logger 类型的要求。

修复步骤

将 electron-log 的导入方式从命名导入改为默认导入:

import { autoUpdater } from "electron-updater";
import log from "electron-log/node"; // 改为默认导入

log.transports.file.level = "debug";
autoUpdater.logger = log;
autoUpdater.autoDownload = false;

此时导入的 log 是完整的 Logger 实例,包含 transports 属性和符合要求的日志方法,可直接解决两个 TypeScript 错误。

自定义对话框无提示问题修复

错误原因1:事件监听顺序错误

你在注册事件监听器之前就调用了 autoUpdater.checkForUpdates(),导致事件触发时监听器尚未就绪,无法捕获事件并弹出对话框。

修复步骤1:调整代码顺序

先注册所有事件监听器,再调用检查更新的方法:

// 先注册事件监听器
autoUpdater.on("checking-for-update", () => {
    dialog.showMessageBox({
        type: "info",
        title: "检查更新",
        message: "正在检查更新...",
    });
});

autoUpdater.on("update-available", () => {
    dialog.showMessageBox(
        {
            type: "info",
            title: "发现更新",
            message: "检测到新版本,是否立即更新?",
            buttons: ["更新", "暂不"],
        },
        (index: number) => {
            if (index === 0) {
                autoUpdater.downloadUpdate();
            }
        },
    );
});

// 最后调用检查更新
autoUpdater.checkForUpdates();

错误原因2:可能缺少 dialog 模块导入

确保已正确导入 Electron 的 dialog 模块:

import { dialog } from "electron";

额外检查项

  1. 确认 autoUpdater 配置正确:在 package.json 中配置正确的 publish 字段(例如 GitHub Releases、自定义服务器等),否则 autoUpdater 无法检测到更新。示例配置:
    "publish": {
        "provider": "github",
        "owner": "你的GitHub用户名",
        "repo": "你的仓库名"
    }
    
  2. 验证事件触发状态:在事件监听器中添加日志输出,确认事件是否正常触发:
    autoUpdater.on("checking-for-update", () => {
        log.info("正在检查更新");
        dialog.showMessageBox(...);
    });
    

内容的提问来源于stack exchange,提问作者Chris Williamson

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.13 16:21:00