vue项目打包成exe

news2024/9/26 3:23:47

目标:vue的项目打包成为exe可执行文件

工具:需要使用到Electron框架

首先,我们了解一下什么是Electron;

Electron 是由 GitHub 开发而成的。它是使用 JavaScript,HTML 和 CSS 构建跨平台的桌面应用程序的框架,它可以兼容 Mac、Windows 和 Linux 三个平台。

Electron 由三大部分组成,分别是 Chromium、Node.js、Native APIs

 

其中,

  1. Chromium 为 Electron 提供强大的 UI 渲染能力,可以在不考虑兼容性的情况下,利用强大的 Web 生态来开发界面。
  2. Node.js 让 Electron 有了底层的操作能力,比如文件的读写、集成 C++ 等。
  3. 内置的原生 API 解决了跨平台的问题。

回归正题:

关于 Electron ,常见的有两种打包方法

第一种:将自己的 vue 项目打包,放到官方的 demo 文件中,改变打包路径

第二种:在自己的 vue 的项目中引入插件,然后打包

推荐使用第一种方法:打包方式简单

第一步:把electron的官方例子扒下来,下面简称A,留着待用:

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

第二步:进入我们自己的项目(下面简称B),修改公共路径为相对路径(很多同学都是这步出了问题,导致 npm run build 后出现白屏情况)

如果你是 vue-cli3 构建的项目:

执行下列指令,打开vue-cli图形配置界面,选择配置,修改公共路径为 ./ , 保存即可:

vue ui

 

 

或者直接打开项目的配置文件vue-config.js,找到publicPath,将publicPath的值修改为“./”

如果你是vue-cli2 或者 webpack 创建的项目:

进入config文件夹下的 index.js ,将其中的 assetsPublicPath 修改为相对路径 ./ ,保存即可:

 

 

第三步:打包你的项目,我相信这步你已经轻车熟路了~,将打包出来的 dist 文件夹复制到之前下载的A文件夹中

npm run build

第四步:进入刚才下载的A项目,删除项目根目录下的 index.html 文件。

第五步:在A项目中找到入口文件 main.js ,修改打包的文件路径为我们的index.html:

// main.js 原始内容

mainWindow.loadFile('index.html')

// 修改后的内容

mainWindow.loadFile('./dist/index.html')

第六步:在A项目中检查 package.json 的命令,正常情况下,运行下列指令即可进行打包效果预览:

以上六步进展都很顺利一般,下面就是要下载A项目的electron的依赖包了

由于electron的源是国外的,如果没有翻墙,下载起来会很慢,网上普遍的建议是更换为淘宝的镜像就行下载,但是我本机无论是官方的还是淘宝的镜像都不行,大家可以根据自己电脑网路情况进行尝试,我本机尝试了很多次都不行,同事给的包在本机执行也报错,无奈只能网上继续找方法。

不知道当前使用的镜像是哪个的,执行此命令查看

npm config get registry

最终在网上找到如下方法,在我本机很快下载好了依赖包

先运行

npm install -g cnpm --registry=https://registry.npmmirror.com

再运行

cnpm install --save-dev electron

速度很快就下载好了,一点都不会卡顿,解决了一个大难题,知乎地址:解决npm安装electron总失败的问题 - 知乎 (zhihu.com)

安装完之后执行npm run start正常情况下就可以看到自己的项目了 ,如果出现白屏请返回查看第二步,看看是否是路径问题

 

在这里我遇到了一个问题:可以正常登录,调试里面也提示接口正常,登录成功了,但是页面就是无法跳转,再次找解决方案吧

问题原因:

大部分vue 前端项目 会使用 js-cookie 这个库 来操作浏览器的cookie查看项目果然使用了
然而这个库 在electron下 会无法使用 (最坑的是还没报错)
从而导致 登录成功以后 写cookie 读cookie的操作 全部失败
自然而然 登录无法跳转了
解决方案:
不使用该库 改为使用localStorage

 

至此跳转的问题解决可以正常登录了,由于项目中还使用了cesium.js,三维地球无法显示,报错

Cesium.js:83     GET http://t2.tianditu.gov.cn/ibo_c/wmts?service=wmts&request=GetTile&version=1.0.0&LAYER=ibo&tileMatrixSet=c&TileMatrix=2&TileRow=0&TileCol=1&style=default&format=tiles&tk=a8d8ff2d1a95b117000f2510a02f5828 403 (Forbidden)

天地图拒绝了项目的访问,这个原因可能是因为天地图的key的问题,因为账号不是我申请的,未测试,待解决

除了未解决的问题,项目算是可以正常打包了,继续我们打包的步骤:

第七步:在A项目中,下载打包需要的依赖 electron-packager

cnpm install electron-packager --save-dev

 

几秒钟就下载好了

第八步:在A项目中,进入 package.json ,在 scripts 中添加 packager 指令,如下所示:

 

有兴趣可自行查看一下这些命令的意思,网上讲解的很详细,此处不在赘述

第九步:运行命令打包,然后项目中会出现一个 App-win32-x64 的文件夹,这个文件就是打包好的桌面应用,文件夹里有一个 App.exe 文件,App.exe就是这个项目的启动文件:

npm run packager

最后这步我电脑是怎么都打包不了,查看了很多资料依旧没解决

 

以上就是vue项目打包为exe的所有步骤了

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/889763.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

[JavaWeb]【三】Maven

目录 一 什么是Maven 二 Maven的作用 2.1 依赖管理 2.2 统一项目目录 2.3 标准项目构建 三 Maven概述 3.1 介绍 3.2 安装 四 IDEA集成Maven 4.1 配置Maven环境 4.1.1 单个项目配置 4.1.1.1 创建项目 4.1.1.2 配置项目JDK版本 4.1.1.3 配置maven 4.1.2 配置全局Maven环…

2023年我国重点水利工程建设全面提速,数字孪生赋能智慧水利

一、水利工程行业概述和分类 从定义上来看,水利工程是用于控制和调配自然界的地表水和地下水,达到除害兴利目的而修建的工程。也称为水工程。 根据观研报告网发布的《中国水利工程行业现状深度调研与投资趋势预测报告(2023-2030年&#xff…

入门jdk1.8处理空指针API-Optional

文章目录 入门jdk1.8处理空指针API-Optional类图结构简要说明常用api实践操作应用场景场景一: 对象不为空,做一些逻辑处理场景二:对象为空抛异常,或者对象某个字段为空抛指定异常场景三:级联判空,父节点&am…

【Control Net】第二章——模型介绍,线稿类

ControlNet1.1版本中发布了15个模型,有点过于多了。这里给分成三类: 线稿类(5个) 线稿类顾名思义,是处理线稿的,或者把图片提取成线稿的。 Canny,硬边缘提取 最早的边缘提取算法,提取的效果已经不如Lineart效果好了,处理有些粗糙。 MLSD,直线检测 可以识别建筑、…

【Linux】查看系统内存命令(详细讲解)

👉博__主👈:米码收割机 👉技__能👈:C/Python语言 👉公众号👈:测试开发自动化【获取源码商业合作】 👉荣__誉👈:阿里云博客专家博主、5…

【Apollo】赋能移动性:阿波罗自动驾驶系统的影响

前言 Apollo (阿波罗)是一个开放的、完整的、安全的平台,将帮助汽车行业及自动驾驶领域的合作伙伴结合车辆和硬件系统,快速搭建一套属于自己的自动驾驶系统。 开放能力、共享资源、加速创新、持续共赢是 Apollo 开放平台的口号。百度把自己所拥有的强大、…

Nvidia Jetson 编解码开发(1)介绍

前言 由于项目需要,需要开发Jetson平台的硬件编解码; 优化CPU带宽,后续主要以介绍硬件编解码为主 1.Jetson各平台编解码性能说明 如下是拿了Jetson nano/tx2/Xavier等几个平台做对比; 这里说明的编解码性能主要是对硬件来说的 2. 编解码实现说明 2.1 软件编解码 优点:…

CAS 一些隐藏的知识,您了解吗

目录 ConcurrentHashMap 一定是线程安全的吗 ConcurrentHashMap 在JDK1.8中ConcurrentHashMap 内部使用的是数组加链表加红黑树的结构,通过CASvolatile或synchronized的方式来保证线程安全的,这些原理已毋庸置疑,一言不合上代码. 模拟2个线程累计&#…

I/O软件层次到底是怎么分的?以及对库函数和系统调用的一些联想

其中,设备驱动程序和中断处理程序是直接和硬件打交道的 相关题目: 将系统调用参数翻译成设备操作命令的工作由()完成 A. 用户层I/O; B. 设备无关的操作系统软件;C. 中断处理;D. 设备驱动程序 …

vue3 videojs实现播放器,动态更改src

一、背景 vue3下载第三方插件videojs,达到播放器的效果,并且点击事件能够动态更改播放器的src。实现思路: 场景一:只有一个播放器,当点击事件,直接赋值,动态更改封装好的组件的src参数&#xff…

【AI】如何用AI生成XMind思维导图

哈喽,大家好,我是木头左,物联网搬砖工一名,致力于为大家淘出更多好用的AI工具! 背景 随着人工智能技术的不断发展,越来越多的应用场景开始涉及到AI技术。在办公软件领域,XMind是一款非常受欢迎…

阿里云服务区ECS,申请免费的服务器之后,如何使用xshell 登陆,找不到匹配的host key 算法

目录 1 问题2 解决 1 问题 当在阿里云免费领取服务器之后,使用xshell 登陆不上,提示 找不到匹配的host key 算法 或者 找不到匹配的keyexchange算法 咋解决 2 解决 在在服务器端配置文件:/etc/ssh/sshd_config # 在行尾增加",ecdh…

Linux系统编程:通过System V共享内存实现进程间通信

目录 一. 共享内存实现进程间通信的原理 二. 共享内存相关函数 2.1 共享内存的获取 shmget / ftok 2.2 共享内存与进程地址空间相关联 shmat 2.3 取消共享内存与进程地址空间的关联 shmdt 2.4 删除共享内存 shmctl 2.5 通信双方创建共享内存代码 三. 共享内存实现进程间…

基于java/springboot的考研学习平台

摘 要 本毕业设计的内容是设计并且实现一个考研学习平台。它是在Windows下,以MYSQL为数据库开发平台,Tomcat网络信息服务作为应用服务器。考研学习平台的功能已基本实现,主要包括学生、教师、课程信息、学习资源、课程购买、课程发货、课程…

【Spring Boot】构建RESTful服务 — 实战:实现Web API版本控制

实战:实现Web API版本控制 前面介绍了Spring Boot如何构建RESTful风格的Web应用接口以及使用Swagger生成API的接口文档。如果业务需求变更,Web API功能发生变化时应该如何处理呢?可以通过Web API的版本控制来处理。 1.为什么进行版本控制 …

「天锐绿盾」——企业电脑文件加密防泄密软件

随着信息技术的快速发展,公司的日常运营和商业机密都依赖于电脑文件。然而,黑客攻击、员工疏忽或物理丢失等原因都可能导致公司电脑文件泄露,给公司带来巨大的经济损失和声誉损失。因此,公司需要采取有效的措施来保护电脑文件的安…

因数据泄露被罚80万!高校数据安全合规建设如何开展?

8月16日,“南昌网警巡查执法”官方公号披露了一起高校数据泄露事件。 根据通报,南昌某高校3万余条师生个人信息数据在境外互联网上被公开售卖。南昌公安网安部门即刻开展一案双查,抓获犯罪嫌疑人3名,并对涉案高校不履行数据安全保…

游戏IP如何变身数字人?数字人绑定技术了解下

随着数字人的概念大火,各行各业纷纷推出专属的数字人,游戏《王者荣耀》作为国内最大的手游IP,凭借其自有资源角色IP的优势,推出了数字人“上官婉儿”,在晚会上携手真人跨次元演绎歌曲,在动作和舞蹈过程中由…

打造专属照片分享平台:快速上手Piwigo网页搭建

文章目录 通过cpolar分享本地电脑上有趣的照片:部署piwigo网页前言1.Piwigo2. 使用phpstudy网页运行3. 创建网站4. 开始安装Piwogo 总结 🍀小结🍀 🎉博客主页:小智_x0___0x_ 🎉欢迎关注:&#x…

性能分析之MySQL慢查询日志分析

一、背景 MySQL的慢查询日志是MySQL提供的一种日志记录,他用来记录在MySQL中响应的时间超过阈值的语句,具体指运行时间超过long_query_time(默认是10秒)值的SQL,会被记录到慢查询日志中。 慢查询日志一般用于性能分析时开启,收集慢SQL然后通过explain进行全面分析,一…