电子构建失败并出现 ERR_ELECTRON_BUILDER_CANNOT_EXECUTE

Posted

技术标签:

【中文标题】电子构建失败并出现 ERR_ELECTRON_BUILDER_CANNOT_EXECUTE【英文标题】:electron-build fails with ERR_ELECTRON_BUILDER_CANNOT_EXECUTE 【发布时间】:2020-11-14 07:05:24 【问题描述】:

目标

我想在 Windows 机器上为运行 Raspbian32 的 Rasperry PI 4 构建一个电子应用程序

配置

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

打电话

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

返回错误

无法获取,等待错误=获取 “https://service.electron.build/find-build-agent?no-cache=1ghlrte”: dial tcp 51.15.76.176:443: connectex: 连接尝试失败 因为连接方在一段时间后没有正确响应 时间,或建立连接失败,因为连接的主机有 没有回应。 尝试=0 等待时间=2 错误:C:\A\Repo\test\node_modules\app-builder-bin\win\x64\app-builder.exe 以代码 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 Server\130\Tools\Binn\;C:\Program Files\Microsoft SQL Server\Client SDK\ODBC\170\Tools\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files\Microsoft SQL Server\150\DTS\Binn\;C:\Program Files (x86)\Microsoft SQL Server\150\Tools\Binn\;C:\Program Files\Microsoft SQL Server\150\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 ]

【问题讨论】:

【参考方案1】:

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

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

【讨论】:

谢谢,看来确实是这个原因,虽然不是很好的理由。所以我正在寻找替代方案。我自己设法建立在 rasbian32 pi 4 上。但是由于此代码转到基于 Windows 的 teamcity 构建服务器...我的问题是 sqlite 扩展确实需要本地编译。因此,在 Ubuntu 上的交叉构建将失败,因为对 electron-builder 的调用将调用“后构建”,但这将针对 x64 而不是 armv7 进行编译。【参考方案2】:

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

service.electron.build is unavailable Error: Cannot get, wait error=Get https://service.electron.build/find-build-agent service.electron.build is unavailable - Urgently please suggest an alternate Local build service not detected Unable to build AppImage on Windows - service.electron.build Connection to remote builder refused, while building linux package

也就是说,我通过 Docker 使用了以下工作方法,这使我能够在不到 5 分钟的时间内从 Windows 10 为我的 Electron 应用程序构建 Linux 可再分发的 .deb 包:

安装 Docker (link) 使用以下控制台命令下载electronuserland/builder Docker 映像:

docker pull electronuserland/builder

在 Electron 项目的根文件夹(例如 C:\MyApp)中,键入以下命令行命令以运行容器并将 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

如果一切顺利,您应该能够在 Electron 项目的 @ 中找到您的 MyApp.deb 文件(或 rpmAppImage 或您在电子构建器的 package.json 文件中配置的任何内容) 987654343@文件夹。

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

【讨论】:

有用的答案和博客,谢谢,它奏效了。但由于某种原因,这破坏了我的 Windows 构建脚本(如 'electron-builder' is not recognized as an internal or external command)。 通过删除 node_modules 后跟 npm install 进行修复

以上是关于电子构建失败并出现 ERR_ELECTRON_BUILDER_CANNOT_EXECUTE的主要内容,如果未能解决你的问题,请参考以下文章

离子构建失败:失败:构建失败并出现异常

在电子应用程序中使用 libxml-xsd 失败并出现绑定错误

构建失败并出现异常 [Android SDK 平台 25]

添加设计生成的用户表时,Rails 数据库迁移失败并出现“重复的列名:电子邮件”

构建失败并出现异常 - 颤动

android studio:失败:构建失败并出现异常