这段时间公司项目需要做Electron开发,我负责部分主进程开发和打包工作。
1、不能跨系统来打包
即不能在windows下打linux的包,需要用vmware安装一个有界面的linux操作系统来完成此工作,可以装ubuntu 20。
2、打linux包的命令
"package:linux": "rm -rf src/dist && yarn build && electron-builder build --linux",
"package:armv7l": "rm -rf src/dist && yarn build && electron-builder build --linux --armv7l",
3、调试主进程需要注意
需要装webpack.config.renderer.dev.babel.js里的
spawn('npm', ['run', 'start:main'], {
shell: true,
env: process.env,
stdio: 'inherit',
})
.on('close', (code) => process.exit(code))
.on('error', (spawnError) => console.error(spawnError));
先注释掉,如果不注释会弹出两个界面。
4、调试主进程的launch.json配置
{
"version": "0.2.0",
"configurations": [
{
"name": "Electron: Main",
"type": "node",
"request": "launch",
"protocol": "inspector",
"runtimeExecutable": "yarn",
"runtimeArgs": ["start:main", "--inspect=5858", "--remote-debugging-port=9223"],
"preLaunchTask": "Start Webpack Dev"
},
{
"name": "Electron: Renderer",
"type": "chrome",
"request": "attach",
"port": 9223,
"webRoot": "${workspaceFolder}",
"timeout": 15000
}
],
"compounds": [
{
"name": "Electron: All",
"configurations": ["Electron: Main", "Electron: Renderer"]
}
]
}
5、安装依赖时最好用yarn
npm i可能会引起一些不知名的错误
6、到arm上安装步骤
./文件名
报错:Running as root without --no-sandbox is not supported
./文件名 --no-sandbox
Error: Cannot find module ‘fs/promises’
神奇的是项目中都没有使用此包,怎么会报此错呢?
后来有同事发现是"electron-updater": “^4.3.4"的问题,修改成"electron-updater”: "4.3.4"再打包,就能正确运行了。
7、打包时出现Get “https://github.com/electron-userland/electron-builder-binaries/releases/download/appimage-12.0.1/appimage-12.0.1.7z”: EOF
需要以下操作
cd ~/.cache/electron-builder/appimage
通过路径下载7z包放到上面的路径,解压两次后,再打包就成功了。