electron打包Vue前端

这篇具有很好参考价值的文章主要介绍了electron打包Vue前端。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

Electron-Forge 打包Vue项目

效果:electronforge可将前端静态页面打包成.exe、.deb和.rpm等,能适配各种平台

  • 示例:Windows环境下将前端 Vue 项目打包成exe文件

  • 打包后的 exe 文件
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

  • 运行 exe 文件
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

一、项目准备

开源项目 RouYi 下载

  1. 本地环境
# 环境版本信息
node -v  # v20.11.1
npm -v  # 10.2.4

# 设置源
npm config set registry https://registry.npmmirror.com/

# 查看 node 源
npm config get registry
  1. 安装依赖
# 切换到Vue前端项目
cd ruoyi-ui
# 安装Vue所需依赖
npm install
# 运行 Vue 项目
npm run dev
  1. 报错
  • 3.1 原因:Node版本高了
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

  • 3.2 修改 package.json
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

  • 3.3 修改后的 package.json

  "scripts": {
    "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    "build:prod": "vue-cli-service build",
    "build:stage": "vue-cli-service build --mode staging",
    "preview": "node build/index.js --preview",
    "lint": "eslint --ext .js,.vue src"
  }, 

二、项目配置

2. 修改项目配置

ruoyi-ui 下的配置修改

2.1 .env.production
# 修改前
VUE_APP_BASE_API = '/prod-api'

# 修改后(与后端保持一致)
VUE_APP_BASE_API = 'http://localhost:8080'
2.2 vue.config.js
# 修改前:静态资源路径
publicPath: process.env.NODE_ENV === "production" ? "/" : "/",

# 修改后
publicPath: './',
 
# 实际接口地址与后端Sprintboot项目保持一致
target: `http://localhost:8080`,
2.3 修改路由配置

进入 ruoyi-ui/src/router/index.js

# 修改前:url不带#
mode: 'history'

# 修改后:url带#
mode: 'hash'
2.4 全局修改Cookies为localStorage

由于打包成exe或deb这类可执行文件后,本地是没有 Cookies

vue打包exe文件,Linux一键部署,前端,electron,vue.js

  1. 全局搜索Cookies.get并替换为localStorage.getItem
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

  2. 全局搜索Cookies.set并替换为localStorage.setItem
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

  3. 全局搜索Cookies.remove并替换为localStorage.removeItem
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

  4. 进入ruoyi-ui/src/views/login.vue

  • 修改前
localStorage.setItem("username", this.loginForm.username, { expires: 30 });
localStorage.setItem("password", encrypt(this.loginForm.password), { expires: 30 });
localStorage.setItem('rememberMe', this.loginForm.rememberMe, { expires: 30 });
  • 修改后
localStorage.setItem("username", this.loginForm.username);
localStorage.setItem("password", encrypt(this.loginForm.password));
localStorage.setItem('rememberMe', this.loginForm.rememberMe);

防止登录界面错乱显示

getCookie() {
  const username = localStorage.getItem("username");
  const password = localStorage.getItem("password");
  const rememberMe = localStorage.getItem('rememberMe');
  // 由于localStorage获取值时,没有值默认是 null 而不是 undefined
  this.loginForm = {
    username: username === null ? this.loginForm.username : username,
    password: password === null ? this.loginForm.password : decrypt(password),
    rememberMe: rememberMe === null ? false : Boolean(rememberMe)
  };
},

错乱显示示例
vue打包exe文件,Linux一键部署,前端,electron,vue.js

2.5 退出登录白页问题

进入 ruoyi-ui/src/layout/components/Navbar.vue

  • 修改前
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

  • 修改后

    async logout() {
      this.$confirm('确定注销并退出系统吗?', '提示', {
        confirmButtonText: '确定',
        cancelButtonText: '取消',
        type: 'warning'
      }).then(() => {
        this.$store.dispatch('LogOut').then(() => {
          this.$router.push('/login')
        })
      }).catch(() => {});
    }
2.6 无效会话 401

src/utils/request.js

修改前

if (code === 401) {
  if (!isRelogin.show) {
    isRelogin.show = true;
    MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
      isRelogin.show = false;
      store.dispatch('LogOut').then(() => {
        location.href = '/index';
      })
  }).catch(() => {
    isRelogin.show = false;
  });
}

修改后

if (code === 401) {
  if (!isRelogin.show) {
    isRelogin.show = true;
    MessageBox.confirm('登录状态已过期,您可以继续留在该页面,或者重新登录', '系统提示', { confirmButtonText: '重新登录', cancelButtonText: '取消', type: 'warning' }).then(() => {
      isRelogin.show = false;
      store.dispatch('LogOut').then(() => {
        location.href = '/#/login';
        // 或者
        // location.href = '/';
      })
  }).catch(() => {
    isRelogin.show = false;
  });
}

三、开始打包

3.1 打包 Vue
npm run build:prod
  • 报错
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

  • 原因
    node版本过高

  • 解决方案
    进入 ruoyi-ui/package.json

  • 修改前
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

  • 修改后

"scripts": {
    "dev": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service serve",
    "build:prod": "SET NODE_OPTIONS=--openssl-legacy-provider && vue-cli-service build",
    "build:stage": "vue-cli-service build --mode staging",
    "preview": "node build/index.js --preview",
    "lint": "eslint --ext .js,.vue src"
  },

以上配置修改后,重新执行打包命令

npm run build:prod

打包好后出现 ruoyi-ui/dist 文件夹
vue打包exe文件,Linux一键部署,前端,electron,vue.js

3.1 下载 electron 骨架项目

第一步:下载把electron官方例子

git clone https://github.com/electron/electron-quick-start 

第二步:配置项目

  • 2.1 删除 index.htmlpackage-lock.json

vue打包exe文件,Linux一键部署,前端,electron,vue.js

  • 2.2 将 Vue 打包后的dist放入项目 electron-quick-start 根目录上

vue打包exe文件,Linux一键部署,前端,electron,vue.js

  • 2.3 入口文件 main.js ,修改打包的文件路径为我们的index.html
// 原始内容 
mainWindow.loadFile('index.html') 

// 修改后的内容 
mainWindow.loadFile('./dist/index.html') 
  • 2.4 进入 package.json
// 原始内容 
  "devDependencies": {
    "electron": "^29.2.0"
  }
// 修改后的内容 
  "devDependencies": {}

第三步:安装依赖

  • 2.1 配置npm

如果不配置,为 electron-quick-start 项目下载 electron 超级慢,甚至下载失败!!!

寻找电脑上的 .npmrc:默认c盘下
vue打包exe文件,Linux一键部署,前端,electron,vue.js

Everything是一款在系统中快速搜索文件的软件

.npmrc 中添加最后两行

prefix=D:\Environment\nodejs\node_global
cache=D:\Environment\nodejs\node_cache
registry=https://registry.npmmirror.com/

disturl=https://registry.npmmirror.com/-/binary/node
electron_mirror=https://registry.npmmirror.com/-/binary/electron/
  • 下载依赖
npm install --save-dev electron
npm install --save-dev @electron-forge/cli
npm exec --package=@electron-forge/cli -c "electron-forge import"
npm install --save-dev @electron-forge/plugin-fuses
  • 控制台输出

vue打包exe文件,Linux一键部署,前端,electron,vue.js

# 运行预览打包后的exe
npm run start
# 构建分发包形成单个exe
npm run make
  • Windows下成功打包exe
    vue打包exe文件,Linux一键部署,前端,electron,vue.js

electron-forge 会检测当前系统是Windows,还是Linux,最终分发成.exe、.deb或.rpm都是看你当前执行 npm run make

# 当然你可以强制修改平台,通过添加参数platform
  "scripts": {
    "start": "electron-forge start",
    "package": "electron-forge package",
    "make": "electron-forge make --platform=linux"
  },

But ERROR
vue打包exe文件,Linux一键部署,前端,electron,vue.js

Windows 上打包成 .deb不被允许

依据 electronforge 官网解释

Electron Forge 官网 deb 描述
vue打包exe文件,Linux一键部署,前端,electron,vue.js

你只能在 Linux 或者 macOS操作系统上打包 deb 文件,因此 Windows 操作系统下无法构建.deb的哦!!!

参考网站:

  1. electronforge官网

  2. ruoyi-vue | electron打包教程(超详细)

  3. 将Vue项目打包为Windows应用(.exe)

  4. electron-forge 流水线踩坑记录文章来源地址https://www.toymoban.com/news/detail-858721.html

到了这里,关于electron打包Vue前端的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【前端部署】vue项目打包并部署到Linux服务器

    在vs code中打开vue前端项目文件夹,在终端中输入 npm run build ,打包完成后,在前端项目文件夹中会生成一个名为 dist 的文件夹,如下图所示: dist文件夹打开如下所示: 打开服务器终端,在终端中输入以下命令,下载nginx安装包。 其中nginx版本可以自己选择,具体版本可查看

    2024年02月06日
    浏览(68)
  • 【Electron将HTML项目打包成桌面应用exe文件】

    1、初始化 此时项目多出一个package.json文件。 2、在根目录下新建main.js 3、安装electron 4、配置package的js文件 5、打包执行以下命令,此时会输出文件夹/out,找到exe文件就是打包程序的快捷方式,但是还没结束。我们只是通过electron-packager,将electron应用打包成可执行exe,我们还

    2024年02月10日
    浏览(40)
  • relectron框架——打包前端vue3、react为pc端exe可执行程序

    大家好,我是yma16,本文分享关于使用electronjs打包前端vue3、react成exe可执行程序。。 vue3系列相关文章: 前端vue2、vue3去掉url路由“ # ”号——nginx配置 csdn新星计划vue3+ts+antd赛道——利用inscode搭建vue3(ts)+antd前端模板 认识vite_vue3 初始化项目到打包 python_selenuim获取csdn新星赛道

    2024年02月02日
    浏览(57)
  • 前端 Vue启动本地(.exe)文件

    首先,启动本地的.exe文件的方式有以下两种: 方式1:通过使用JS打开本地exe文件。但是一般的浏览器,由于安全问题,都会禁止掉这个JS对象,这就导致部分浏览器不支持该种方式。 方式2:利用浏览器外部协议(URL Procotol)打开本地exe文件。简单来说通过修改注册表信息,然后

    2024年02月22日
    浏览(42)
  • electron+vue3全家桶+vite项目搭建【24】设置应用图标,打包文件的图标

    demo项目地址 在electron中,我们可以通过electron-builder的配置文件来设置打包后的应用图标 因为mac环境下的图标需要特殊格式,这里我们可以利用electron-icon-builder进行配置 1.引入相关依赖 加入安装过程中卡在了 phantomjs-2.1.1-windows.zip的下载,可以直接去github上下载 这里我也放一

    2024年02月17日
    浏览(64)
  • 【微服务部署】五、Jenkins+Docker一键打包部署NodeJS(Vue)项目的Docker镜像步骤详解

      NodeJS(Vue)项目也可以通过打包成Docker镜像的方式进行部署,原理是先将项目打包成静态页面,然后再将静态页面直接copy到Nginx镜像中运行。 一、服务器环境配置   前面说明了服务器Nginx的安装和配置,这里稍微有些不同,但是因为此文是用Nginx镜像和前端镜像页面同

    2024年02月06日
    浏览(42)
  • 打包部署若依SpringBoot后端和Vue前端

    打开若依,点击右侧的Maven展开Maven管理,选择ruoyiLifecycle 先双击clean清除原本启动项目时生成的文件。然后点击package等待项目打包 打包完成后会在ruoyi-adminsrctarget里面看到.jar后缀的文件,就代表打包成功(可以把这个文件复制出来存放到其他地方,方便后面启动) 把刚刚打

    2024年04月25日
    浏览(42)
  • 前端Vue项目webpack打包部署后源码泄露解决

    前端项目使用nuxt框架(基于Vue),采用Webpack打包,部署到服务器后,进行漏洞检测。 经Webpack打包部署到服务器后,访问并打开开发者模式,在Source下出现[name]路径,内部包含(webpack)buildin文件夹。(做漏洞分析时,会认为该内容涉及源码泄露) 1.首先考虑源码泄露的问题 打

    2024年02月03日
    浏览(86)
  • nginx: 部署前端项目的详细步骤(vue项目build打包+nginx部署)

    目录 第一章 前言 第二章 准备工作 2.1 项目打包理解 2.1.1 打包命令 2.1.2 理解npm run serve/dev 和 npm run build命令 2.2 nginx参数配置理解 2.2.1 nginx常用基本命令 2.2.2 默认配置 2.2.3 搭建不同网站的站点 2.2.4 禁止访问的目录以及一键申请SSL证书验证目录相关设置 2.2.5 根据文件类型设置

    2024年02月04日
    浏览(59)
  • Vue 前端代码多地部署(打包后配置动态IP)

    vue 代码打包之后,需要在多个地方部署。正常操作是:先改 ip 地址,再打包。这样每换一个地方部署,就需要重新打包一次。 下面总结两种方式可以在打包之后动态修改 ip 地址。 在 public 根目录下新建一个 config.json 文件 在需要的页面通过 jQuery 请求 api 数据 打包完之后,

    2024年02月15日
    浏览(50)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包