【问题标题】:electron-builder fails building linux package on macos - Error: Unknown target: buildelectron-builder 无法在 macos 上构建 linux 包 - 错误:未知目标:构建
【发布时间】:2020-11-20 20:51:58
【问题描述】:

我正在使用electron-builder 来打包我的应用程序。我有一个所有资源所在的dist/ 文件夹。根文件夹中的main.js 不需要任何转译,包括主进程代码。使用electron 命令启动时,这在开发模式下运行良好。

我使用package.json 配置设置了electron-builder

  [...]
  "main": "./main.js",
  "build": {
    "appId": "com.electron.mycompany.myapp",
    "productName": "myapp",
    "linux": {
      "target": "deb"
    },
    "files": [
      "./dist",
      "./main.js"
    ]
  },
  [...]

我正在像这样启动electron-builderelectron-builder -ml build。 Macos 构建包很好,我能够启动应用程序。但是 Linux 构建失败。我正在 macos Catalina 上构建 Linux 包。它给了我错误堆栈跟踪:

rebuilding native dependencies  dependencies=leveldown@5.6.0 platform=linux arch=x64
  ⨯ Unknown target: build  stackTrace=
                             Error: Unknown target: build
                                 at createCommonTarget (/Users/username/Projects/myappnode_modules/app-builder-lib/src/targets/targetFactory.ts:90:11)
                                 at /Users/username/Projects/myapp/node_modules/app-builder-lib/src/linuxPackager.ts:65:18
                                 at mapper (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/targets/targetFactory.ts:57:16)
                                 at LinuxPackager.createTargets (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/linuxPackager.ts:63:7)
                                 at createTargets (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/targets/targetFactory.ts:64:12)
                                 at Packager.doBuild (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/packager.ts:442:28)
                                 at processTicksAndRejections (internal/process/task_queues.js:85:5)
                                 at executeFinally (/Users/username/Projects/myapp/node_modules/builder-util/src/promise.ts:12:14)
                                 at Packager._build (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/packager.ts:373:31)
                                 at Packager.build (/Users/username/Projects/myapp/node_modules/app-builder-lib/src/packager.ts:337:12)
                                 at executeFinally (/Users/username/Projects/myapp/node_modules/builder-util/src/promise.ts:12:14)
  • building embedded block map  file=dist/IJP Visualization Tool-1.0.0-alpha.1-mac.zip

我没有使用任何代码签名(我也不想)。是不是配置错误?好像是这样,但不确定到底是什么问题。

【问题讨论】:

  • 我相信你不必附加build。我的包使用 electron-builder -ml... 构建得很好(虽然在 Linux 上)
  • 没有说明 Mac 构建能够完成但 Linux 不能完成
  • 我添加了一个带有行为解释的答案。

标签: electron electron-builder


【解决方案1】:

根据electron-builder CLI documentation,所有平台开关都接受一个“目标列表”,本质上是您在package.json 中配置的不同平台条目(build.<platform>.target,例如build.linux.target)。

但是,通过使用这些目标列表,您可以指定要构建的目标并排除所有其他目标。由于 Linux 的 switch 是 switch 列表-ml 中的最后一个,因此 Electron Builder 将其解释为您想将其传递给目标列表。这不适用于 macOS 构建步骤,因为您必须使用 -m <targets> -l <targets>-ml <targets> 显然仅适用于 Linux。

因此,通过将build 附加到命令行,您告诉 Electron Builder 为 macOS 编译所有配置的目标,但只构建名为build 的 Linux 目标。由于没有这样的目标,Electron Builder 崩溃。从你的命令中删除 build 就可以了。

【讨论】:

    猜你喜欢
    • 2023-01-29
    • 2018-06-08
    • 2021-01-13
    • 2015-03-15
    • 2020-02-03
    • 1970-01-01
    • 2017-12-05
    • 1970-01-01
    • 2018-11-22
    相关资源
    最近更新 更多