【发布时间】:2021-01-03 01:56:31
【问题描述】:
目标
我已经阅读了许多关于应用程序引导和构建管道的 Electron 教程,并假设您可以有一个项目来处理跨平台操作。
但是在打包和构建过程中多次失败后,我终于意识到也许我的假设是错误的。
问题
这是我想要的基于电子锻造的工作流程:
1。在 Windows 上创建应用骨架
yarn create electron-app my-app
cd my-app
yarn add my-dependency
yarn start
yarn make
这一切都很顺利。现在进入 macOS
2。将项目转移到 macOS 上一试
在 macOS 上,运行应用程序会导致错误
cd my-app
yarn start
错误看起来像这样
$ yarn start
yarn run v1.22.4
$ electron-forge start
✔ Checking your system
✔ Locating Application
✔ Preparing native dependencies: 1 / 1
✔ Launching Application
/path/to/my-app/node_modules/electron/dist/electron.exe: /path/to/my-app/node_modules/electron/dist/electron.exe: cannot execute binary file
error Command failed with exit code 126.
info Visit https://yarnpkg.com/en/docs/cli/run for documentation about this command.
所以我一味的在macOS上重装electron
yarn add electron
yarn start
yarn make
在 macOS 上一切正常。
现在回到 Windows。
3。回到 Windows 仔细检查
这次。我遇到了与第 2 步类似的问题。 Windows 发行版现在有错误的 Electron 二进制文件。
调查结果
我发现在 Windows 和 macOS 之间传输项目文件时,即使我仔细合并,这个文件也经常被覆盖。
my-app/node_modules/electron/path.txt
它包含一个到 Electron 可执行文件的硬编码路径:
macOS
Electron.app/Contents/MacOS/Electron
窗户:
electron.exe
解决方法
我可以通过将预定义的元数据复制到项目文件夹中来添加预构建步骤,具体取决于当前平台。但是对于像 Electron 这样的框架来说,这样的 hack 听起来很糟糕。
问题
所以对我来说,这种元数据安排使得在 Windows 和 macOS 之间共享同一个项目变得很困难。我无法想象 Electron 开发人员会这样工作。
那么我错过了什么?
【问题讨论】:
标签: windows macos electron cross-platform yarnpkg