cnpm/cnpmjs.org

electron-builder-binaries 镜像不完整

Closed this issue · 15 comments

当前:https://npm.taobao.org/mirrors/electron-builder-binaries/
image
缺失的部分文件:https://github.com/electron-userland/electron-builder-binaries/tags?after=v4.1.0
image

没有看 cnpmjs.org 的实现逻辑,感觉是没有完整同步?

是有这个问题。现在改用华为云的镜像了。华为云上的比npmmirror完整。
https://mirrors.huaweicloud.com/electron-builder-binaries/

好像是处理GitHub的API https://api.github.com/repos/%s/releases 的时候没有分页,所以缺失了数据。
https://github.com/cnpm/mirrors/blob/master/sync/github.js#L65

好像是改的这里解决的问题 cnpm/cnpmcore#152

⨯ cannot resolve https://npmmirror.com/mirrors/electron/12.0.8/electron-v12.0.8-win32-x64.zip: status code 404
github.com/develar/app-builder/pkg/download.(*Downloader).follow
        /Volumes/data/Documents/app-builder/pkg/download/downloader.go:237
github.com/develar/app-builder/pkg/download.(*Downloader).DownloadNoRetry
        /Volumes/data/Documents/app-builder/pkg/download/downloader.go:128
github.com/develar/app-builder/pkg/download.(*Downloader).Download
        /Volumes/data/Documents/app-builder/pkg/download/downloader.go:112
github.com/develar/app-builder/pkg/electron.(*ElectronDownloader).doDownload
        /Volumes/data/Documents/app-builder/pkg/electron/electronDownloader.go:192
github.com/develar/app-builder/pkg/electron.(*ElectronDownloader).Download
        /Volumes/data/Documents/app-builder/pkg/electron/electronDownloader.go:177
github.com/develar/app-builder/pkg/electron.downloadElectron.func1.1
        /Volumes/data/Documents/app-builder/pkg/electron/electronDownloader.go:73
github.com/develar/app-builder/pkg/util.MapAsyncConcurrency.func2
        /Volumes/data/Documents/app-builder/pkg/util/async.go:68
runtime.goexit
        /usr/local/Cellar/go/1.16.5/libexec/src/runtime/asm_amd64.s:1371  

现在 ELECTRON_BUILDER_BINARIES_MIRRORELECTRON_MIRROR 地址应该是什么?
使用下面的URL有问题。
ELECTRON_BUILDER_BINARIES_MIRROR = "https://npmmirror.com/mirrors/electron-builder-binaries/"
ELECTRON_MIRROR = "https://npmmirror.com/mirrors/electron/"

https://npmmirror.com/mirrors/electron/v12.0.8/electron-v12.0.8-win32-x64.zip 路径少了一个 v

地址是electron builder生成的。

加一个环境变量

ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/

加一个环境变量

ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/

加过了。

 INFO  Building app with electron-builder:
  • electron-builder  version=22.14.5 os=10.0.19044
  • writing effective config  file=dist_electron\builder-effective-config.yaml
  • packaging       platform=win32 arch=x64 electron=12.0.8 appOutDir=dist_electron\win-unpacked
  ⨯ cannot resolve https://npmmirror.com/mirrors/electron/12.0.8/electron-v12.0.8-win32-x64.zip: status code 404
github.com/develar/app-builder/pkg/download.(*Downloader).follow
        /Volumes/data/Documents/app-builder/pkg/download/downloader.go:237
github.com/develar/app-builder/pkg/download.(*Downloader).DownloadNoRetry
        /Volumes/data/Documents/app-builder/pkg/download/downloader.go:128
github.com/develar/app-builder/pkg/download.(*Downloader).Download
        /Volumes/data/Documents/app-builder/pkg/download/downloader.go:112
github.com/develar/app-builder/pkg/electron.(*ElectronDownloader).doDownload
        /Volumes/data/Documents/app-builder/pkg/electron/electronDownloader.go:192
github.com/develar/app-builder/pkg/electron.(*ElectronDownloader).Download
        /Volumes/data/Documents/app-builder/pkg/electron/electronDownloader.go:177
github.com/develar/app-builder/pkg/electron.downloadElectron.func1.1
        /Volumes/data/Documents/app-builder/pkg/electron/electronDownloader.go:73
github.com/develar/app-builder/pkg/util.MapAsyncConcurrency.func2
        /Volumes/data/Documents/app-builder/pkg/util/async.go:68
runtime.goexit
        /usr/local/Cellar/go/1.16.5/libexec/src/runtime/asm_amd64.s:1371  
ExecError: D:\workspace\Tracing-Simulation-Platform\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE       
    at ChildProcess.<anonymous> (D:\workspace\Tracing-Simulation-Platform\node_modules\builder-util\src\util.ts:250:14)
    at Object.onceWrapper (node:events:510:26)
    at ChildProcess.emit (node:events:390:28)
    at ChildProcess.cp.emit (D:\workspace\Tracing-Simulation-Platform\node_modules\builder-util\node_modules\cross-spawn\lib\enoent.js:34:29)
    at maybeClose (node:internal/child_process:1064:16)
    at Process.ChildProcess._handle.onexit (node:internal/child_process:301:5) {
  exitCode: 1,
  alreadyLogged: false,
  code: 'ERR_ELECTRON_BUILDER_CANNOT_EXECUTE'
}

@meteormatt 提供一个可以复现的代码库或者命令?

@meteormatt 提供一个可以复现的代码库或者命令?

我给几个命令吧。

npm install electron-builder -g

在当前目录创建package.json

{
  "name": "test",
  "version": "0.0.1",
  "devDependencies": {
    "electron": "^12.2.3"
  },
  "build": {
    "electronDownload": {
      "mirror": "https://npmmirror.com/mirrors/electron/"
    }
  }
}

执行

npm install

electron-builder

Dingtalk_20220209152526

看了下可能是electron builder会把v去掉,可能是当年为了兼容npm.taobao.org 😅
electron/get#125
electron/get#150
https://github.com/electron/get/blob/main/src/artifact-utils.ts#L59

@meteormatt "mirror": "https://npmmirror.com/mirrors/electron/v"

你加一个 v 在 url 配置上,应该就 OK 了。

@meteormatt "mirror": "https://npmmirror.com/mirrors/electron/v"

你加一个 v 在 url 配置上,应该就 OK 了。

可以是可以,就是解决方案不太好。应该在npmmirror.com上兼容以前的不加v的情况。。。

@meteormatt "mirror": "https://npmmirror.com/mirrors/electron/v"
你加一个 v 在 url 配置上,应该就 OK 了。

可以是可以,就是解决方案不太好。应该在npmmirror.com上兼容以前的不加v的情况。。。

不会再增加特殊逻辑,官方的源站有 v 就有 v,没有就没有。electron 从 7.0.0 开始是带 v 的,之前是不带的。