电子构建失败 ERR_ELECTRON_BUILDER_CANNOT_EXECUTE

electron-build fails with ERR_ELECTRON_BUILDER_CANNOT_EXECUTE

目标

我想在 windows 机器上为 Rasperry PI 4 运行 Raspbian32

构建一个电子应用程序

配置

"linux": {
        "target" : [
            {
                "target": "AppImage",
                "arch": ["armv7l"]
            }
        ]
    },

通话

"build-dist-lin": "webpack --mode production && electron-builder -l --config .env.json",

返回错误

cannot get, wait error=Get "https://service.electron.build/find-build-agent?no-cache=1ghlrte": dial tcp 51.15.76.176:443: connectex: A connection attempt failed because the connected party did not properly respond after a period of time, or established connection failed because connected host has failed to respond. attempt=0 waitTime=2 Error: C:\A\Repo\test\node_modules\app-builder-bin\win\x64\app-builder.exe exited with code ERR_ELECTRON_BUILDER_CANNOT_EXECUTE

没有线索

此日志中没有更多信息可以知道哪里出错了。在同一个 env.json 中,我还有一个 Windows 配置部分,使用 -w 调用它可以很好地运行。所以这意味着配置可能没问题。这意味着它在其他地方失败了。

完整日志:

 0 info it worked if it ends with ok
1 verbose cli [
1 verbose cli   'C:\A\Tools\nodejs\node.exe',
1 verbose cli   'C:\A\Tools\nodejs\node_modules\npm\bin\npm-cli.js',
1 verbose cli   'run',
1 verbose cli   'build-dist-lin'
1 verbose cli ]
2 info using npm@6.13.4
3 info using node@v12.16.1
4 verbose run-script [ 'prebuild-dist-lin', 'build-dist-lin', 'postbuild-dist-lin' ]
5 info lifecycle testingtest@0.0.39~prebuild-dist-lin: testingtest@0.0.39
6 info lifecycle testingtest@0.0.39~build-dist-lin: testingtest@0.0.39
7 verbose lifecycle testingtest@0.0.39~build-dist-lin: unsafe-perm in lifecycle true
8 verbose lifecycle testingtest@0.0.39~build-dist-lin: PATH: C:\A\Tools\nodejs\node_modules\npm\node_modules\npm-lifecycle\node-gyp-bin;C:\A\Repo\testingtestplayer\node_modules\.bin;C:\Python27\;C:\Python27\Scripts;C:\Program Files (x86)\Intel\iCLS Client\;C:\Program Files\Intel\iCLS Client\;C:\WINDOWS\system32;C:\WINDOWS;C:\WINDOWS\System32\Wbem;C:\WINDOWS\System32\WindowsPowerShell\v1.0\;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files\Intel\Intel(R) Management Engine Components\DAL;C:\Program Files (x86)\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\Intel(R) Management Engine Components\IPT;C:\Program Files\Intel\WiFi\bin\;C:\Program Files\Common Files\Intel\WirelessCommon\;C:\WINDOWS\System32\OpenSSH\;C:\a\tools\nodejs\;C:\ProgramData\chocolatey\bin;C:\Program Files\Microsoft SQL Server0\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC0\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server0\DTS\Binn\;C:\Program Files\Microsoft SQL Server0\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server0\Tools\Binn\;C:\Program Files\Microsoft SQL Server0\Tools\Binn\;C:\Program Files\dotnet\;C:\a\tools\Git\cmd;C:\Users\edward.deleau\AppData\Local\Microsoft\WindowsApps;C:\a\tools\Microsoft VS Code\bin;C:\Users\edward.deleau\AppData\Roaming\npm;C:\Users\edward.deleau\.dotnet\tools;C:\Users\edward.deleau\.dotnet\tools
9 verbose lifecycle testingtest@0.0.39~build-dist-lin: CWD: C:\A\Repo\testingtestplayer
10 silly lifecycle testingtest@0.0.39~build-dist-lin: Args: [
10 silly lifecycle   '/d /s /c',
10 silly lifecycle   'webpack --mode production && electron-builder -l --config .env.json'
10 silly lifecycle ]
11 silly lifecycle testingtest@0.0.39~build-dist-lin: Returned: code: 1  signal: null
12 info lifecycle testingtest@0.0.39~build-dist-lin: Failed to exec build-dist-lin script
13 verbose stack Error: testingtest@0.0.39 build-dist-lin: `webpack --mode production && electron-builder -l --config .env.json`
13 verbose stack Exit status 1
13 verbose stack     at EventEmitter.<anonymous> (C:\A\Tools\nodejs\node_modules\npm\node_modules\npm-lifecycle\index.js:332:16)
13 verbose stack     at EventEmitter.emit (events.js:311:20)
13 verbose stack     at ChildProcess.<anonymous> (C:\A\Tools\nodejs\node_modules\npm\node_modules\npm-lifecycle\lib\spawn.js:55:14)
13 verbose stack     at ChildProcess.emit (events.js:311:20)
13 verbose stack     at maybeClose (internal/child_process.js:1021:16)
13 verbose stack     at Process.ChildProcess._handle.onexit (internal/child_process.js:286:5)
14 verbose pkgid testingtest@0.0.39
15 verbose cwd C:\A\Repo\testingtestplayer
16 verbose Windows_NT 10.0.18362
17 verbose argv "C:\A\Tools\nodejs\node.exe" "C:\A\Tools\nodejs\node_modules\npm\bin\npm-cli.js" "run" "build-dist-lin"
18 verbose node v12.16.1
19 verbose npm  v6.13.4
20 error code ELIFECYCLE
21 error errno 1
22 error testingtest@0.0.39 build-dist-lin: `webpack --mode production && electron-builder -l --config .env.json`
22 error Exit status 1
23 error Failed at the testingtest@0.0.39 build-dist-lin script.
23 error This is probably not a problem with npm. There is likely additional logging output above.
24 verbose exit [ 1, true ]

似乎是电子生成器的问题。由于与 electron builder 关联的免费服务主机不可用,因此它拒绝连接。您可以从下面 link 监控问题线程。我相信这个问题已经被关注了很长时间。

https://github.com/electron-userland/electron-builder/issues/3569

不幸的是,这个问题似乎不会很快得到解决,正如我们从试图处理的用户提出的(大部分是未解决的)GitHub 问题的数量中可以看出的那样过去几个月的此类问题:

就是说,我使用 Docker 使用了以下工作方法,这使我能够从 Windows 10 in不到 5 分钟:

docker pull electronuserland/builder

  • 从 Electron 项目的根文件夹(例如 C:\MyApp),键入以下 command-line 命令到 运行 容器并将 Electron 项目的根文件夹映射到 /project 虚拟路径:

docker run -rm -ti -v C:\MyApp\:/project -w /project electronuserland/builder

  • 从容器内部,键入以下命令来升级 Electron 项目的 Yarn 包,全局安装 electron-builder 包并构建 Linux 可再发行包:

cd /project

yarn upgrade

yarn global add electron-builder

electron-builder -l

如果一切顺利,您应该能够找到您的 MyApp.deb 文件(或 rpmAppImage,或您在 electron-builder的 package.json 文件)在 Electron 项目的 /dist/ 文件夹中。

有关整个过程的更多信息和背景知识,请查看我的博客 this post