当前位置: 首页 > article >正文

彻底解决 node/npm, Electron下载失败相关问题, 从底层源码详解node electron 加速配置

最近玩了一下electron项目, 总是会遇到electron的下载失败问题, 于是看了一下node源码, 做一个记录.

node/npm 加速配置

这个配置通过设置node配置里面的registry 这个配置项来完成加速. 配置方法

npm config set registry https://registry.npmmirror.com

上面的命令就是将当前的npm命令的registry设置为阿里的这个npm镜像.

当然,如果你还想自定义node的其他的配置, 可以通过 命令 npm config edit 来对所有的npm的可配置项进行自定义, 如下图所示, 下面的这个项目就是我们通过上面的命令自动配置上去的.

这个些配置信息,实际上是保存在了我们用户目录下的  .npmrc 文件里面,  当然, 如果你觉得命令行不习惯,你也可以直接编辑这个文件,如果不存在直接创建这个文件然后编辑即可.  注意这个文件中 以 ; 开头的内容为注释信息

Electron下载加速配置

这个配置较为丰富, 我们先来看一下electron源码里面关于下载地址的拼接是如何完实现的吧. 这个下载相关逻辑的文件位于 node_modules/electron-download/lib/index.js  

最后的下载URL地址是这样拼接的:  

 get url () {
    return process.env.ELECTRON_DOWNLOAD_OVERRIDE_URL ||
      `${this.baseUrl}${this.middleUrl}/${this.urlSuffix}`
  }

 从上面的代码 process.env.ELECTRON_DOWNLOAD_OVERRIDE_URL 我们可以看出,这个下载地址我们是可以通过一个环境配置项 ELECTRON_DOWNLOAD_OVERRIDE_URL 来直接覆盖版本等的拼接,不过这个一般用不上,因为我们要下载的electron一般都会带上版本.

后面的 `${this.baseUrl}${this.middleUrl}/${this.urlSuffix}`  这3个部分就是最终的下载URL的拼接地址,  从这里我们可以看出, 这里的:

baseUrl 就是我们要配置的加速地址,且后面必须要带上 / 

middleUrl 这个是加速地址后面的那一部分,一般是版本信息,  这个对于阿里或者华为的加速地址是可以省略不配置的

urlSuffix 这个部分是由electron自动生成的最终要下载的文件名,如 electron-v4.2.12-darwin-x64.zip  这个也不需要我们配置,它会更加当前版本和系统平台自动生成.

electron url下载地址生成逻辑

了解了url地址的拼接, 让我们再来看看上面3部分的生成逻辑

从上图中我们就可以清晰的看出electron下载url中的各个部分的拼接逻辑,从而就知道了应该如何配置加速地址和相关的下载配置了. 

process.env.XXX   这类的配置属于环境配置, 大写的属于系统环境配置项,我们需要在系统环境配置文件中进行,如 .zshrc   .bash_profile等

# electron加速镜像地址 注意阿里的镜像只有9.x以上版本的electron
# ELECTRON_MIRROR="https://registry.npmmirror.com/-/binary/electron/"

ELECTRON_MIRROR="https://mirrors.huaweicloud.com/electron/"

这类的系统环境配置后需要使他生效: source  ~/.zshrc

注意阿里的electron只有新版本,旧版本没有, 建议使用华为加速

https://mirrors.huaweicloud.com/electron/

https://registry.npmmirror.com/-/binary/electron/

process.env.npm_config_xxx 这个类型的配置信息属于npm的配置信息, 我们可以通过命令 npm config set xxx value 的形式进行配置,或者直接在 用户目录下的 


http://www.kler.cn/a/292035.html

相关文章:

  • 嵌入式硬件杂谈(二)-芯片输入接入0.1uf电容的本质(退耦电容)
  • Android OpenGL ES详解——glTexImage2D方法
  • 15-1.Java 网络编程之 InetAddress(InetAddress 常用静态方法、InetAddress 常用方法)
  • 整数唯一分解定理
  • Vulhub漏洞复现---solr---CVE-2019-17558
  • 1、使用vscode+eide+stm32cubeMx开发stm32
  • 无需更换摄像头,无需施工改造,降低智能化升级成本的智慧工业开源了。
  • ClickHousez中如何定时清理过期数据库?
  • 生信机器学习入门4 - scikit-learn训练逻辑回归(LR)模型和支持向量机(SVM)模型
  • Qt (13)【Qt窗口 —— 颜色对话框 QColorDialog】
  • spring cloud gateway 之删除请求头
  • 【CNN训练梯度裁剪】
  • HarmonyOS $r访问资源
  • MyPrint打印设计器(九)svg篇-圆
  • 【计算机视觉前沿研究 热点 顶会】ECCV 2024中Mamba有关的论文
  • C# NX二次开发-获取体全部面
  • Circuitjs 在线电路模拟器使用指南
  • tomcat日志显示中文乱码的方法解决
  • MySQL基础:索引
  • ESRI ArcGIS Pro 3.1.5新功能及安装教程和下载
  • python常用库学习-Matplotlib使用
  • Redis——BigKey
  • 【MySQL】主键优化原理篇——【数据组织方式&主键顺序插入&主键乱序插入&页分裂&页分裂】
  • 【Python机器学习】核心数、进程、线程、超线程、L1、L2、L3级缓存
  • 空气质量题数据处理与分析
  • 在元神操作系统中获取动态内存