Electron 兼容 Windows Server 2008 开发踩坑记录

ixiaoye 类库工具 2025-07-10 6 0 electron

最近用 Electron 开发一个需要在 Windows Server 2008 上运行的桌面应用,遇到了两个典型问题,记录下解决方案供自己日后参考。

问题1:PNPM 打包依赖问题

现象

  • 使用 pnpm 安装依赖后打包

  • 生成的 exe 文件运行时提示缺少模块

  • 必须进入 release/win-unpacked/resources/app 目录执行 pnpm install 才能运行

  • 拷贝到没有安装 pnpm 的电脑完全无法运行

原因
PNPM 使用硬链接和符号链接管理依赖,Electron 打包工具无法正确处理这些链接关系。

解决方案
改用传统的 npm install 安装依赖后再打包:

# 删除原有依赖
rm -rf node_modules
rm package-lock.json

# 使用npm重新安装
npm install

# 然后打包
npm run build

优点

  • 打包后所有依赖会被正确包含

  • 无需目标机器安装 pnpm

  • 部署更简单

问题2:SSL 证书兼容性问题

现象

  • 在 Windows Server 2008 上运行

  • 加载 HTTPS 内容时显示证书错误

  • 现代证书不被旧系统信任

解决方案

代码忽略证书错误(开发环境用)

// 主进程 main.js
app.on('certificate-error', (event, webContents, url, error, certificate, callback) => {
  event.preventDefault();
  callback(true); // 强制接受证书
});

总结

  1. 依赖管理:Electron 打包优先使用 npm 而非 pnpm

  2. 证书问题

    • 开发时可代码忽略

    • 生产环境需更新系统证书

  3. 终极方案:建议客户升级到更新的 Windows 版本

希望这些经验能帮助遇到同样问题的开发者。老系统兼容确实是个坑,能升级系统是最好的解决方案。


附兼容旧系统的配置:


{
  "name": "zhiban",
  "version": "1.0.0",
  "main": "main.js",
  "scripts": {
    "start": "electron .",
    "pack": "electron-builder --dir",
    "build": "electron-builder"
  },
  "build": {
    "appId": "com.zhiban",
    "productName": "zhiban",
    "files": [
      "**/*"
    ],
    "directories": {
      "output": "release"
    },
    "mac": {
      "category": "public.app-category.developer-tools",
      "target": [
        "dmg",
        "zip"
      ]
    },
    "win": {
      "icon": "robot_emoji.png",
      "target": [
        {
          "target": "nsis",
          "arch": [
            "x64",
            "ia32"
          ]
        }
      ]
    },
    "linux": {
      "target": [
        "AppImage",
        "deb"
      ]
    },
    "asar": false,
    "extraResources": []
  },
  "devDependencies": {
    "electron": "22.3.27",
    "electron-builder": "23.6.0"
  },
  "dependencies": {
    "jsdom": "^26.1.0"
  }
}


评论