• Electron和vue3集成(可用于生产打包)


    注意:我使用的是node版本16.20.1,因为electron-builder插件仅支持到node17、不支持node18,而node16是LTS版本,所以我选择16

    1、初始化vue项目

    1. npm install -g vue
    2. vue create 项目名称
    3. cd 项目目录

    我尝试了用脚手架初始化方式:npm create vue@latest

    最后启动有问题,所以先用简单初始化

    2、添加vue-cli-plugin-electron-builder插件

    1. vue add electron-builder
    2. Choose Electron Version
    3. 选择13.0.0

    3、安装完了,运行一下试试

    npm run electron:serve

    运行问题1:

    Launching Electron时,可能会报Failed to fetch extension, trying 4 more times的错误

    可以禁用Vue Devtools,编辑src\background.js,注释掉installExtension(VUEJS3_DEVTOOLS)

    1. app.on('ready', async () => {
    2. if (isDevelopment && !process.env.IS_TEST) {
    3. // Install Vue Devtools
    4. try {
    5. //注释掉这行
    6. // await installExtension(VUEJS3_DEVTOOLS)
    7. } catch (e) {
    8. console.error('Vue Devtools failed to install:', e.toString())
    9. }
    10. }
    11. createWindow()
    12. })

    4、安装其他插件

    第一步的vue create只是初始化一个基本项目框架,如果还需要安装其他核心插件(比如vue-router),可以通过vue控制台导入当前项目后安装

    vue ui

    导入--》选择项目文件夹--》导入这个文件夹--》左侧菜单/插件--》右上角/添加插件--》查找插件@vue/cli-plugin-router--》点击官方插件那行--》右下角/安装--》完成安装--》继续

    5、打包

    npm run electron:build

    打包问题1:

    可能会卡在downloading,我们可以根据命令行输出的提示,预先下载包放到或解压到本地目录,就会自动跳过下载开始打包

    electron-xxxx.zip,拷贝到C:\Users\用户名\AppData\Local\electron\Cache\electron-xxxx.zip

    winCodeSign-xxx.7z,解压到C:\Users\用户名\AppData\Local\electron-builder\Cache\winCodeSign\winCodeSign-xxx\

    nsis-xxx.7z,解压到C:\Users\用户名\AppData\Local\electron-builder\Cache\nsis\nsis-xxx\

    nsis-resources-xxx.7z,解压到C:\Users\用户名\AppData\Local\electron-builder\Cache\nsis\nsis-resources-xxx\

    打包问题2:

    如果你的windows用户名是中文,路径带中文有可能会报错Error in script "" on line 75 -- aborting creation process

    打开 node_module/app-builder-lib/out/targets/nsis/NsisTarget.js文件,在 executeMakensis 方法中加入一个参数,表示使用UTF-8编码

    1. //node_module/app-builder-lib/out/targets/nsis/NsisTarget.js
    2. async executeMakensis(defines, commands, script) {
    3. const args = this.options.warningsAsErrors === false ? [] : ["-WX"];
    4. //此处新增
    5. args.push("-INPUTCHARSET", "UTF8");
    6. //结束
    7. for (const name of Object.keys(defines)) {
    8. const value = defines[name];
    9. if (value == null) {
    10. args.push(`-D${name}`);
    11. } else {
    12. args.push(`-D${name}=${value}`);
    13. }
    14. }
    15. }

  • 相关阅读:
    mysql workbench常用操作
    vue3封装element-plus的Form表单
    【面试经典150 | 哈希表】两数之和
    【前端】彻底搞懂HTTP协议
    AUTOSAR汽车电子嵌入式编程精讲300篇-基于CAN总线的温度场测量装置的研究与设计
    vue.js毕业设计,基于vue.js前后端分离订座预约小程序系统 开题报告
    如何一键核实验证身份证的真伪?
    基于STC12C5A60S2系列1T 8051单片的模数芯片ADC0809实现模数转换应用
    K_A05_004 基于 STM32等单片机驱动2X2块(8X8)点阵模块(MAX7219)显示0-9与中文
    非科班,补基础
  • 原文地址:https://blog.csdn.net/ownfire/article/details/132809765