Electron应用突发更新失败:无法解析latest.yml内容求助
Electron应用更新下载失败排查方案
问题现象
此前运行正常的Electron应用突发更新下载失败,核心报错为无法解析latest.yml文件,实际返回内容是HTML登录页面而非合法YAML格式数据。
完整报错信息
Checking for update [2023-01-13 16:42:04.897] [error] Error: Error: Cannot parse update info from latest.yml in the latest release artifacts (https://net2qa.netapp.com/client/win/latest.yml?noCache=1gmld8n1b): YAMLException: end of the stream or a document separator is expected (2:11) 1 | <!DOCTYPE html> 2 | <!-- Build: 1.0.2817.0 --> ---------------^ 3 | <!-- StateVersion: 2.1.1 --> 4 | <!-- DeploymentMode: Development --> at generateError (C:\Users\test\AppData\Local\Programs\net2offlineclient-qa\resources\app\node_modules\js-yaml\lib\loader.js:183:10) at throwError (C:\Users\test\AppData\Local\Programs\net2offlineclient-qa\resources\app\node_modules\js-yaml\lib\loader.js:187:9) at readDocument (C:\Users\test\AppData\Local\Programs\net2offlineclient-qa\resources\app\node_modules\js-yaml\lib\loader.js:1645:5) at loadDocuments (C:\Users\test\AppData\Local\Programs\net2offlineclient-qa\resources\app\node_modules\js-yaml\lib\loader.js:1688:5) at Object.load (C:\Users\test\AppData\Local\Programs\net2offlineclient-qa\resources\app\node_modules\js-yaml\lib\loader.js:1714:19) at Object.parseUpdateInfo (C:\Users\test\AppData\Local\Programs\net2offlineclient-qa\resources\app\node_modules\electron-updater\out\providers\Provider.js:82:28) at GenericProvider.getLatestVersion (C:\Users\test\AppData\Local\Programs\net2offlineclient-qa\resources\app\node_modules\electron-updater\out\providers\GenericProvider.js:23:35) at process.processTicksAndRejections (node:internal/process/task_queues:96:5) at async NsisUpdater.getUpdateInfoAndProvider (C:\Users\test\AppData\Local\Programs\net2offlineclient-qa\resources\app\node_modules\electron-updater\out\AppUpdater.js:319:19) at async NsisUpdater.doCheckForUpdates (C:\Users\test\AppData\Local\Programs\net2offlineclient-qa\resources\app\node_modules\electron-updater\out\AppUpdater.js:333:24), rawData: <!DOCTYPE html> <!-- Build: 1.0.2817.0 --> <!-- StateVersion: 2.1.1 --> <!-- DeploymentMode: Development --> <!-- CorrelationId: a3e10eac-45cb-4dc2-ac07-0d80c9e5ba8d --> <!-- DataCenter: PNQ --> <!-- Slice: 001-000 --> <html lang="en"><head><link rel="icon" href="data:;base64,iVBORw0KGgo="><script data-container="true" nonce="91dduewxjK+C2hhaclwx1w==">var CP = { "list": [] }; var SA_FIELDS = { "AttributeFields": [ { "UX_INPUT_TYPE": "TextBox", "USER_INPUT_TYPE": "TextBox", "IS_TEXT": true, "IS_EMAIL": false, "IS_PASSWORD": false, "IS_DATE": false, "IS_RADIO": false, "IS_DROP": false, "IS_TEXT_IN_PARAGRAPH": false, "IS_CHECK_MULTI": false, "IS_LINK": false, "VERIFY": false, "DN": "Email Address", "ID": "signInName", "U_HELP": "", "DAY_PRE": "0", "MONTH_PRE": "0", "YEAR_PRE": "0", "IS_REQ": true, "IS_RDO": false, "OPTIONS": [] } ] };
用户已执行操作
- 删除
node_modules文件夹并重新安装依赖 - 更新NodeJS、Electron、Electron Builder及Electron Updater至指定版本
- 确认应用版本间仅做JavaScript代码修复,无新增库或重大文件变更
相关版本信息
- Electron-Builder: 23.3.3
- Electron-Updater: 5.2.1
- Node.js: 18.9.0
- Electron: 20.1.4
排查方向与解决方案
验证更新服务器返回内容
直接在浏览器或curl工具中访问更新地址https://net2qa.netapp.com/client/win/latest.yml,确认返回的是合法YAML文件而非HTML页面。若返回登录页面,说明更新资源被身份验证拦截:- 检查服务器端是否新增了访问控制策略(如OAuth、SSO验证)
- 确保更新资源目录允许匿名访问,或配置electron-updater携带必要认证信息(如请求头token)
检查更新资源路径配置
确认electron-builder配置文件(如electron-builder.yml或package.json中的build字段)里的publish配置路径是否正确,排查是否存在路径拼写错误或环境切换导致的地址变更。排查CDN或缓存问题
- 检查服务器端缓存过期策略,确认是否存在旧错误响应被缓存的情况
- 尝试清除本地DNS缓存,或更换网络环境测试访问更新地址
验证electron-updater配置
排查代码中是否错误修改了更新检查URL,或新增了影响网络请求的拦截逻辑(如自定义请求拦截器篡改了响应内容)
内容的提问来源于stack exchange,提问作者Ratan Servegar
相关产品推荐
相关产品推荐

