查看镜像源

npm config get registry

设置镜像源

npm config set registry <地址>

如下设置新的国内镜像源:

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

其它

对于部分包, 仅配置npm镜像源可能还不够, 因为其可能在npm执行过程中, 使用的还有自定义的下载脚本, 因此这个时候仍会音网络问题造成下载失败。

比如electron项目相关的工程:

当我需要 升级项目依赖中的 electron 版本, 或者下载特定版本的electron时, 可能会失败。-> 即使已经配置了国内镜像源。

  • 此时需要单独为electron下载安装时依赖的环境变量设置国内镜像源。
  • 在终端执行export ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/, 为electron的下载单独配置镜像源。(非常推荐)

    需要注意的是, 这行命令仅作用于当前终端, 且无持久化, 如需持久化则可将此命令写入项目根目录的 .npmrc 文件中。

当然, 也可以通过为终端设置代理的方式来解决此问题(不推荐, 不如镜像源的方式稳定)(可能偶尔起作用的情况是由于我没有清理 npm代理 或 npm镜像源 导致的, 以及 已经成功过后的缓存导致的->似乎只要成功过一次后续不管有没有镜像或代理也能一直成功(不肯定哈), 总之 终端的全局代理的配置9成机率对npm是无效的, 只有npm代理和npm镜像配置是最稳的)

  • export ALL_PROXY="socks5://proxyAddress:port"(这是为http和https使用socks5代理的命令, 不适用与解决npm下载依赖的问题) (不过也可以尝试下, 有可能有效果 -> 总之, 优先用下方http协议的代理配置方式)

  • export ALL_PROXY="http://proxyAddress:port"(这是为http和https使用http代理的命令, 适用与解决npm下载依赖的问题)(推荐, 但更推荐使用镜像源的方式, 比较终端代理的方式不稳定)

  • 删除代理

    1
    2
    3
    4
    5
    6
    # 删除代理
    npm config set proxy null
    npm config set https-proxy null

    npm config delete proxy
    npm config delete https-proxy

不论使用镜像源还是终端代理, 都有可能在electron-builder首次构建时, 遇到类似proxyconnect tcp: dial tcp :0: connectex: The requested address is not valid in its context.的错误信息(常在使用electron-builder首次构建时发生)

此问题一般是因为对github的release页面的下载链接访问不畅导致的, 即使用了镜像源, 也避免不了在electron-builder首次构建时从github上下载二进制包。
想要解决此问题

  • 可以尝试切换移动公司的数据网络。(一般情况下对github的线路比较友好)

  • 可以尝试配置npm的代理-只有你的代理可正常使用就能100%解决。(非常推荐, 可结合国内镜像源的配置一起使用 -> [electron-builder构建时肯定可以一起用; 仅npm i时一般仅配置镜像源就足够, 此时不确定一起用会不会受影响])(注意: npm的代理设置, 仅支持http入口协议的代理, 不支持socks5 (不过我也不确定, 但这里可优先使用兼容http协议的代理) ) (npm代理的更改是持久化的, 即使重新打开终端依然有效, 因此不使用时需要手动删除代理。)

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    # 查看
    npm config get proxy
    npm config get https-proxy

    # 设置代理
    npm config set proxy http://server:port
    npm config set https-proxy http://server:port

    # 删除代理
    npm config set proxy null
    npm config set https-proxy null

    npm config delete proxy
    npm config delete https-proxy
  • 终端代理(不稳定, 不推荐)

  • 还可以尝试使用之前的老办法, 手动配置electron-builder所需的依赖 https://srackhall.top/2024/03/28/electron-fragments/#electron-builder

其它的可能需要单独配置的库, 见下图: