electron-builder打包踩过的那些坑

本文为Electron+Vue3开发桌面端软件系列文章第二篇

通过本文,你将获得:

  1. Electron项目如何打包
  2. 打包过程中异常项报错的处理方案

打包

查看package.json中scripts:

json 复制代码
"scripts": {
  "format": "prettier --write .",
  "lint": "eslint . --ext .js,.jsx,.cjs,.mjs,.ts,.tsx,.cts,.mts --fix",
  "start": "electron-vite preview",
  "dev": "electron-vite dev",
  "build": "electron-vite build",
  "postinstall": "electron-builder install-app-deps",
  "build:win": "npm run build && electron-builder --win --config",
  "build:mac": "npm run build && electron-builder --mac --config",
  "build:linux": "npm run build && electron-builder --linux --config"
},

首先执行pnpm postinstall

因为本文项目是在Windows上,执行pnpm build:win

在没有异常情况下,会在根目录下打包输出dist文件夹,如下图所示:

dist下exe是可执行的安装包文件,将这个exe文件分享给你的朋友,就可以让他安装你的软件了。

异常情况

不出意外的话就是出意外了。

我遇到的异常是在electron-builder打包过程中会自动下载依赖的包,由于网络缘故下载总是失败,科学上网的前提下也不行。

winCodeSign-2.6.0.7z 下载失败

在打包构建时,会从https://github.com/electron-userland/electron-builder-binaries/releases/download/winCodeSign-2.6.0/winCodeSign-2.6.0.7z这个地址下载winCodeSign-2.6.0.7z这个包。

解决方案:

在浏览器打开:github.com/electron-us...

找到winCodeSign-2.6.0一栏,在它的Assets中下载第一个7z和第二个zip文件。

将下载的包放入对应的目录下,Windows下的地址:%LOCALAPPDATA%\electron\cache

nsis-3.0.4.1.7z 下载失败

重新打包,出现新的报错。

需要从https://github.com/electron-userland/electron-builder-binaries/releases/download/nsis-3.0.4.1/nsis-3.0.4.1.7z地址下载nsis-3.0.4.1.7z这个包,下载失败导致的报错。

解决方案:

在上文中下载的Source code(zip),本地进行解压,其中就会有我们需要的nsis-3.0.4.1这个包。

在其中找到nsis,重命名为nsis-3.0.4.1,命名规则是根据打包报错中需要下载的文件命名的,https://github.com/electron-userland/electron-builder-binaries/releases/download/nsis-3.0.4.1/nsis-3.0.4.1.7z,需要下载的就是nsis-3.0.4.1这个文件。

将文件放在对应的目录下,Windows下地址是%LOCALAPPDATA%\electron-builder\Cache\nsis

nsis-resources-3.4.1.7z 下载失败

重新打包,出现新的报错。

报错截图如下,是找不到nsis-resources-3.4.1.7z这个包。

解决方案:

还是在之前下载的Source code(zip)文件中会有我们需要的,并且重命名为nsis-resources-3.4.1

将文件放在对应的目录下,Windows下地址是%LOCALAPPDATA%\electron-builder\Cache\nsis

再次执行打包,完美输出,没有异常报错。

总结

  1. 在package.json查看打包命令
  2. 一般由于网络原因的打包异常,可单独下载依赖包,在报错信息中可以窥看到需要的依赖包名称和下载的地址。
相关推荐
java1234_小锋4 小时前
【技术专题】HTML5 网页技术 - HTML5 Canvas 基础以及动画入门
前端·html·html5
知了学历孙老师7 小时前
小自考的校考和统考,出题方和难度差在哪
java·大数据·前端
ShineWinsu9 小时前
对于JavaScript:操作元素的解析
开发语言·前端·javascript·面试·web·dom·元素
福兮说10 小时前
JSON 格式正确,数据就可靠吗?我用一份自编配置检查类型与空值
java·前端·json
程序员老赵12 小时前
Docker 部署青龙面板:轻松搭建定时任务管理平台
前端·docker·开源
Swot12 小时前
Asciidoctor 公式数字下标错位问题:原因分析与解决方案
前端
Swot12 小时前
leo-editor 中将 Markdown 内容转成 asciidoc 格式
前端
狒狒AI12 小时前
Remotion / GSAP+Three / HyperFrames / Skia 四栈实测:代码渲染知识视频的选栈方法(附开源技能)
前端·人工智能·aigc
修炼的dance12 小时前
浏览器里导出H.265,8.5秒和55.5秒差在硬件
前端
补码缩写12 小时前
WebCodecs选编码器,探测之后还要验解码和播放
前端