电子构建失败 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 问题的数量中可以看出的那样过去几个月的此类问题:
- 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 使用了以下工作方法,这使我能够从 Windows 10 in不到 5 分钟:
- 安装 Docker (link)
- 使用以下控制台命令下载 electronuserland/builder Docker 图像:
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
文件(或 rpm
、AppImage
,或您在 electron-builder的 package.json
文件)在 Electron 项目的 /dist/
文件夹中。
有关整个过程的更多信息和背景知识,请查看我的博客 this post。
目标
我想在 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 问题的数量中可以看出的那样过去几个月的此类问题:
- 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 使用了以下工作方法,这使我能够从 Windows 10 in不到 5 分钟:
- 安装 Docker (link)
- 使用以下控制台命令下载 electronuserland/builder Docker 图像:
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
文件(或 rpm
、AppImage
,或您在 electron-builder的 package.json
文件)在 Electron 项目的 /dist/
文件夹中。
有关整个过程的更多信息和背景知识,请查看我的博客 this post。