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

Electron Angular应用配置BITBUCKET变量及自动更新404问题排查

Electron-Updater + Bitbucket 自动更新404问题排查与解决

问题背景

我基于Angular+Electron开发的应用,electron-builder能正常完成构建,也成功把<name>.exe、<name>.blockmap和latest.yml上传到Bitbucket仓库的下载目录。但在Windows机器上运行应用时,electron-updater请求latest.yml始终返回404错误。

用cURL测试却能正常访问,命令如下:

curl -L -H "Authorization: Basic <token>" https://api.bitbucket.org/2.0/repositories/<owner>/<repo>/downloads/latest.yml

疑问点

  1. electron-updater是否支持跟随重定向?需要额外配置吗?
  2. 构建命令中设置的BITBUCKET_*环境变量会被打包进应用吗?如果不能,如何在不硬编码的前提下传入这些值?

排查过程

  • UPDATE 1:尝试将变量写入.env文件,并把该文件加入构建资源列表,但Windows机器运行应用时完全读取不到这些变量。
  • UPDATE 2:编译成Linux AppImage包,通过命令行传入环境变量启动:
    BITBUCKET_USERNAME=<user> BITBUCKET_TOKEN=<app-password> ./<name>.AppImage
    
    打印process.env能看到变量已正确设置,但更新检查仍然返回404。
  • UPDATE 3:直接在主进程入口脚本首行硬编码变量值:
    process.env.BITBUCKET_USERNAME = '<user>';
    process.env.BITBUCKET_TOKEN = '<app-password>';
    
    问题依旧,还是404。

最终解决方法

折腾一圈才发现,错误根源是认证请求头的格式写错了:原本设置的是Basic: <token>,正确的格式应该是Basic <token>(去掉Basic后面的冒号)。修改后,electron-updater能正常请求到latest.yml,自动更新功能恢复正常。

补充疑问解答

  1. 重定向支持:electron-updater默认就会跟随重定向,不需要额外配置,这次的404和重定向无关。
  2. 环境变量打包:构建时通过命令行设置的环境变量不会自动被打包进应用。如果要传递敏感信息,推荐用electron-builder的extraResources配置,把.env文件打包到应用的资源目录,然后在主进程中用dotenv库手动读取该文件,避免硬编码明文信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.21 17:17:31