如何在electron-builder配置中设置GitHub代理以解决依赖下载问题?
解决electron-builder封闭网络下依赖下载失败的代理设置问题
看了你贴的构建日志,那个*proxyconnect tcp: tls: oversized record received with length 20527*错误,大概率是代理没被electron-builder正确识别,或者企业网络的SSL拦截导致的。下面给你几个靠谱的代理设置方法,按需求选就行:
1. 临时通过环境变量设置代理
electron-builder会自动读取系统的HTTP/HTTPS代理环境变量,你可以在执行构建命令前先配置好:
Windows 命令行
# 设置基础代理 set HTTPS_PROXY=http://你的代理地址:端口 set HTTP_PROXY=http://你的代理地址:端口 # 如果代理需要账号密码认证 set HTTPS_PROXY=http://用户名:密码@你的代理地址:端口 # 执行构建命令 electron-builder --win --x64
Linux/macOS 终端
# 设置基础代理 export HTTPS_PROXY=http://你的代理地址:端口 export HTTP_PROXY=http://你的代理地址:端口 # 带认证的情况 export HTTPS_PROXY=http://用户名:密码@你的代理地址:端口 # 执行构建命令 electron-builder --win --x64
要是有内部服务不需要走代理,还可以加个NO_PROXY变量排除:
# Windows set NO_PROXY=localhost,127.0.0.1,你的内部域名或IP段
# Linux/macOS export NO_PROXY=localhost,127.0.0.1,你的内部域名或IP段
2. 配置npm全局代理
因为electron-builder依赖npm的下载机制,直接给npm配置代理的话,后续所有npm相关操作(包括electron-builder拉取依赖)都会自动用这个代理,一劳永逸:
# 设置HTTP代理 npm config set proxy http://你的代理地址:端口 # 设置HTTPS代理 npm config set https-proxy http://你的代理地址:端口 # 代理需要认证的话 npm config set proxy http://用户名:密码@你的代理地址:端口 npm config set https-proxy http://用户名:密码@你的代理地址:端口
之后要取消代理的话,执行这两句就行:
npm config delete proxy npm config delete https-proxy
3. 处理SSL拦截导致的TLS错误
如果你的企业网络有SSL拦截(比如防火墙会替换HTTPS证书),也会触发这个错误。优先推荐把企业的根证书导入到系统信任库,要是赶时间测试的话,也可以临时禁用Node.js的SSL验证(注意:这只适合测试,生产环境别用):
# Windows set NODE_TLS_REJECT_UNAUTHORIZED=0 electron-builder --win --x64
# Linux/macOS NODE_TLS_REJECT_UNAUTHORIZED=0 electron-builder --win --x64
内容的提问来源于stack exchange,提问作者liron_hazan




