vue3+electron+typescript 项目安装、打包、多平台踩坑记录-mac+linux(包括国产化系统)

上一章《vue3+electron+typescript 项目安装、打包、多平台踩坑记录》,我们讲了vue3+electron+typescript的项目安装和windows 32位、64位的打包。这一节我们来看下mac和linux平台的打包和一些坑。

mac

经过上一章我们的踩坑后,再到mac环境,这里看大家的电脑 配置了。如果是 arm架构的,应该问题不大。我这里测试的是x86架构的,i5的mac电脑。很不幸,一开始就遇到一个大坑。

安装依赖时,如果出现 data check 类似的错误,这时恰好电脑又是intel 芯片的,这时候很可能该降系统了。没错,降系统版本。这个有点恶心,我们会发现install 依赖时,给我们下载的electron 依赖包与电脑的芯片架构不一致,很可能给我们下载的是arm架构的依赖,所以一直安装不上。

额mmmmm,这里缺张图片,之前忘了截图保存了。总之就是看到类似 data check 之类的,如果电脑是arm架构的,应该不会有这个问题。

这和mac的新系统有关。自从mac开始使用自研芯片以后,对intel的芯片就爱答不理了,甚至后面升级的系统,貌似直接忽略了电脑本身是intel芯片。其他不多吐槽,直接将系统重置到出厂状态就行(注意是重置到出厂状态,不是重装,重装解决不了问题)

另外还有一个,必须要有xcode的相关命令,这个一般都有的,这里不多说。

搞好这个问题,接下来就简单了。我们直接配置一个打包mac的命令就行
在package.json里面的scripts里面添加命令

 "build:mac": "vite build && electron-builder --mac",

搞定。这里好简单的,就不晒图了

另外,在mac环境打包windows的应用,也很简单的,用这个命令即可:vue-tsc && vite build && electron-builder --win

linux

linux的系统版本太多了,这里试一下开源的ubantu,还有其他国产化的系统,统信,麒麟,深度

ubantu系统信息如下图
在这里插入图片描述

配置linux打包格式和命令

首先配置ilnux的打包格式,在electron.builder.json5中

  "linux": {
    "target": [
      "deb"
    ],
    "artifactName": "${productName}-Linux-${version}_${arch}.${ext}"
  }

linux 平台有很多种包,官方是这样描述的:target = AppImage String | TargetConfiguration - Target package type: list of AppImage, flatpak, snap, deb, rpm, freebsd, pacman, p5p, apk, 7z, zip, tar.xz, tar.lz, tar.gz, tar.bz2, dir.

AppImage,deb,snap等均适用于ubantu。但是snap需要签名,AppImage不需要安装,我们就先不管了, 先以.deb后缀名的包来研究一下

然后去配置打包命令,在package.json中的scripts里面添加该命令,如下

"build:linux": "vite build && electron-builder --linux",

在windows环境打包linux应用

然后运行命令

npm run build:linux

不出意外的话,果然出意外了,报错: ⨯ Please specify project homepage, see https://electron.build/configuration/configuration#Metadata-homepage

Please specify author ‘email’ in the application package.json

See https://docs.npmjs.com/files/package.json#people-fields-author-contributors

It is required to set Linux .deb package maintainer. Or you can set maintainer in the custom linux options.
(see https://www.electron.build/configuration/linux).
failedTask=build stackTrace=Error: Please specify project homepage, see https://electron.build/configuration/configuration#Metadata-homepage
在这里插入图片描述
这个意思就是说,linux平台,homepage,authorl这些配置都是必须的!!

好吧。linux 的 deb格式的包,配置上要多加点东西,我们创建项目时,linux处的配置模式是AppImage,这种格式是不需要这些配置的。AppImage格式这里就不说了,要简单点。去查下官方文档,然后我们在package.json里面加上,如下:

  "homepage": "https://your-app-website-or-project-url.com",
  "author": "yanglian <youremail@qq.com>",

上面的配置,仅测试用,所以随便写的,只要格式符合要求就行

然后再次打包,又又又又报错了,如下:
cannot execute cause=exec: “fpm”: executable file not found in %PATH%
command=fpm -s dir --force -t deb -d libgtk-3-0 -d libnotify4 -d libnss3 -d libxss1 -d libxtst6 -d xdg-utils -d libatspi2.0-0 -d libuuid1 -d libsecret-1-0 --deb-recommends libappindicator3-1 --deb-compression xz --architecture amd
64 --after-install ‘C:\Users\Administrator\AppData\Local\Temp\t-N0FbTK\0-after-install’ --after-remove ‘C:\Users\Administrator\AppData\Local\Temp\t-N0FbTK\1-after-remove’ --description ’

在这里插入图片描述
又又又折腾查询了解了一番,信息如下:

使用Electron-builder在Windows上构建Linux目标包,通常需要确保你具备以下几点:1. Wine子系统: 确理论使用Windows 10或更高版本,确保启用了内置的ine子系统(WSLx)并安装了目标Linux发行版(如Ubuntu)。这将允许你运行Linux命令。2. ine子系统配置: 在ine子系统内安装必要的构建工具,包括fpm、make、gcc等。确保它们在PATH环境变量中可访问。3. Electron-builder配置: 你的electron-builder.json配置文件需要正确指明Linux构建目标和环境。对于特定的错误,确保你没有直接在Windows命令行中调用fpm,因为那是预期在Linux环境下执行的。

额,我先选择放弃!!!!!!!!!!!!因为我还有退路哈哈

在mac环境打包linux应用

因此mac的环境之前已经弄好了,所以,何不先在mac上试试?
同样的配置,我们到mac的开发环境去打包Linux。

运行打包命令
npm run build:linux

还是报错,只不过,和windows的不一样,而且我们发现,mac开发环境下,已经可以自动去下载fpm包了。这也难怪,mac和linxux的环境,本来就相比windows要相近不少。
在这里插入图片描述
这个错误,说的是401,网络问题。虽然我们已经将electron源,npm源都设置成了淘宝镜像,但是,但是,还有些包是从github下载的,md,如果我们的网络访问github费劲的话,只能科学上网了。行吧,开个科学上网,全局代理的那种,再走一波mac的环境,最终打包成功。
然后我们将大好的liunux包拷贝到ubantu虚拟机上。

这里说一下,我的虚拟机安装在windows电脑上,下面简单讲下怎么拷贝。

从windows主机拷贝文件到ubantu虚拟机步骤

第1~4步,如下图:【仅供参考,不同的ubantu版本可能会有差异】
在这里插入图片描述
第一步:找到ubantu的“文件”,点开
第二步:点击“其他位置”
第三步:输入主机的ip地址,注意协议头是smb,例如:smb://192.168.1.10
第四步:点击”连接“
第五步:输入ubantu虚拟机电脑登录密码
在这里插入图片描述
第六步:输入主机的登录用户名和密码,然后点击”连接“
在这里插入图片描述
连接成功后,进去就可以看到类似下面的界面,
在这里插入图片描述
然后去找到放在windows 电脑上的文件,移动到虚拟机对应的地方即可。我这里移动到下载目录。注意,因权限原因,最好不要放到”桌面“目录,可用放”下载“或者”文档“等权限相对宽松的目录

在ubantu虚拟机中安装程序

推荐使用命令安装。直接双击应用或者使用ubantu虚拟机的”程序安装器“运行,可能会有其他问题

sudo dpkg -i ElectronTest-Linux-0.0.1_amd64.deb

在这里插入图片描述
由于使用sudo命令,所以要输入虚拟机电脑登录密码,安装成功后的命令提示信息如下:
在这里插入图片描述
能看到如上信息的基本就是成功的了

在ubantu虚拟机中运行程序

使用命令运行或者菜单运行。安装成功后,在菜单里面能看到新程序的图标,双击运行,也可以使用命令运行
在这里插入图片描述
使用命令运行,在重点控制台输入程序名称即可。注意程序名称和应用程序文件名称不是一回事。程序名称是项目代码里面的package.json 的 name,如下图:
在这里插入图片描述
这里程序名称是:vite-electron,因此,直接在终端输入 vite-electron ,然后 回车,就可以启动程序了
在这里插入图片描述
mac环境打包linux,大功告成!!

ubantu环境打包linux应用

刚刚上面windows电脑上打包报错了,还要装linux子系统什么的,但是,我们已经安装了ubantu虚拟机了,何不在ubantu虚拟机里面直接打包试试?

这里默认已经安装好了nodejs,vue,vscode,git 等开发环境和工具。没安装的估计要先折腾下哦。

关于Nodejs 环境的安装,这里说个遇到的坑:我安装的时候,使用curl只能找到 node16版本的包,但是此时的vue3+vite+electron的项目依赖默认已经要求Node>=18了,所以就想办法装18。由于当前操作时,curl没有18以上的包(也有可能是我操作不对),所以选择了手动安装,手动配置Nodejs环境。
大致步骤是,先下载好node-v18.19.0-linux-x64.tar.xz,接下来的命令如下:

cd /usr/local
sudo tar -xvf node-v18.19.0-linux-x64.tar.xz
cd /usr/local
sudo tar -xvf node-v18.19.0-linux-x64.tar.xz

echo 'export NODE_HOME=/usr/local/node' >> ~/.bashrc
echo 'export PATH=$NODE_HOME/bin:$PATH' >> ~/.bashrc


source ~/.bashrc

可能还有其他坑,大家自行查询了。这里不多说。

拉取项目并打包

这里将文件拷贝或者从git上克隆到目录:文档/projects 下面。在文档里面建文件夹projects时,不要用sudo命令,或者直接界面化操作来创建,创建好的Projects文件夹应该没有“锁”的标志,否则权限问题够喝一壶了

然后安装依赖(ps:还是科学上网和,全局的那种。吐槽:感觉淘宝镜像白设置了。。。)。装好依赖,我们运行命令

npm run build

到这里就可以直接用npm run build了,因为已经到了linux环境的地盘,不需要单独指定环境的了。

如果环境不齐全,我们可能会遇到下面这个错误:
在这里插入图片描述
⨯ cannot execute cause=exit status 1
out={:timestamp=>“2024-06-02T09:45:30.344175+0800”, :message=>“Debian packaging tools generally labels all files in /etc as config files, as mandated by policy, so fpm defaults to this behavior for deb packages. You can disable this default behavior with --deb-no-default-config-files flag”, :level=>:warn}
{:timestamp=>“2024-06-02T09:47:00.518924+0800”, :message=>“Need executable ‘ar’ to convert dir to deb”, :level=>:error}

遇到这个错误,主要是因为在打包Electron应用时,系统缺少必要的工具或遇到了执行权限问题。
错误信息提示了几个关键点:

  1. cannot execute cause=exit status 1:这是一个通用的错误代码,表明打包过程中的某个命令执行失败。
  2. Debian packaging tools generally labels all files in /etc as config files, as mandated by policy, so fpm defaults to this behavior for deb packages. You can disable this default behavior with --deb-no-default-config-files flag:这是个警告,说明Debian打包工具将/etc下的所有文件默认视为配置文件,但不影响打包,可以忽略或按需使用–deb-no-default-config-files标志。
  3. Need executable ‘ar’ to convert dir to deb: 这是最关键的错误,说明缺少ar工具,它是用于创建、修改或提取归档文件的工具,是打包deb文件所必需的。

解决方法:安装ar工具,运行以下命令安装缺失的ar工具

sudo apt-get install binutils

再次尝试打包,这次成功了。

同样,我们使用命令安装程序,然后到菜单里面去,找到安装好的应用,双击打开,应用正常运行
在这里插入图片描述
相关安装步骤上面已经说了,这里不赘述。

国产化操作系统尝试

统信(UOS)系统

众所周知,未来国产化是趋势之一,当下【2024年6月1日】最局希望的当属 鸿蒙系统(Homany OS),国产化的桌面端操作系统则有 Debin(深度),统信(UOS),麒麟,龙芯等等。据我了解,目前(2024年6月)已有不少政府机构已经换成了国产化的系统,所以值得探究一番。

这里装了一个统信的虚拟机,但是,没激活哈。尝试安装下开发环境,所以输入了如下命令,sudo apt-get update
在这里插入图片描述
我晕!!!
在这里插入图片描述
我直接无语!!!

尝试访问下主机的共享文件夹
在这里插入图片描述
格局小了!!

我是说我格局小了,因为目前属个人爱好研究,所以不想去花米。放弃吧。去下载个微信、钉钉之类的或者其他可以传输文件的软件或者方式得了。

ok。这里我用钉钉吧文件传进去了

下载后,这里双击程序安装(因为命令 是不行的了,不行自己试试,除非已经激活了)。我这边成功安装,但是,无法运行。。。。
在这里插入图片描述
统信尝试以失败告终。

deepin系统

作为统信的还同胞兄弟,深度系统(deepin)是不要米的。系统镜像连接:https://cdimage.deepin.com/releases/20.9/deepin-desktop-community-20.9-amd64.iso

安装好虚拟机后,还是使用钉钉传输文件,然后安装。安装和启动程序方法和ubantu一样。不赘述,结果如下:
在这里插入图片描述
欧克。没问题。看来ubantu搞定了,这些使用.deb后缀的系统也差不多

关于文件传输,我这里查找了一下方法,尝试了一下,没成功。所以就直接用钉钉了。我的方法如下,哪位知道问题所在的大神还望不吝赐教。

  1. 在VirtualBox中设置共享文件夹
    关闭虚拟机,选择虚拟机 > 设置 > 选项 > 共享文件夹。
    添加一个新的共享文件夹,选择主机上的文件夹路径,并设定共享名称

  2. 在Deepin中挂载共享文件夹

开启虚拟机后,共享的文件夹通常自动挂载在/mnt/hgfs目录下。如果未自动挂载,可以手动挂载:

sudo mount -t vmhgfs /mnt/hgfs

然后访问 cd /mnt/hgfs/查看共享文件夹名

麒麟系统

没问题,所以不多说了。看图就行
在这里插入图片描述

小结

好了。这里做下小总结吧。

开发环境可打包应用包格式其他说明
windowswindows平台应用windows 的exe,msi可以打包linux应用,但是比较麻烦;想在windows平台打包mac应用??太麻烦,别想
macwindows、mac、linux都行windows 的exe,msi;mac的dmg,pkg;linux平台的AppImage,deb,snap等我最棒,啥都可以干
linuxlinux应用linux平台的AppImage,deb,snap等windows、mac应用也是可以打包的,但是比较麻烦

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【iOS】UI学习——导航控制器、分栏控制器

UI学习&#xff08;三&#xff09; 导航控制器导航控制器基础导航控制器切换导航栏和工具栏 分栏控制器分栏控制器基础分栏控制器高级 导航控制器 导航控制器负责控制导航栏&#xff08;navigationBar&#xff09;&#xff0c;导航栏上的按钮叫UINavigationItem&#xff08;导航…

数据挖掘API拼多多API接口通过id抓取商品详情页数据已拼人数等:打造无缝电商体验的秘诀

引言&#xff1a; 在当今的电商领域&#xff0c;提供无缝、高效的购物体验是吸引和保留客户的关键。拼多多API接口正是这样一个工具&#xff0c;它可以帮助商家实现这一目标。接下来&#xff0c;我们将深入了解拼多多API如何助力商家打造卓越的电商体验。 一、拼多多API的重要…

[线程与网络] 网络编程与通信原理(五): 深入理解网络层IP协议与数据链路层以太网协议

&#x1f338;个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 &#x1f3f5;️热门专栏:&#x1f355; Collection与数据结构 (92平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 &#x1f9c0;Java …

#招聘数据分析#2024年5月前程无忧招聘北上广深成渝对比情况

#招聘数据分析#2024年5月前程无忧招聘北上广深成渝对比情况 0、根据前程无忧不完全样本统计&#xff0c;北上广深成都重庆平均月工资从高到低依次为 北京15037元、上海14230元、深圳13230元、广州11125元、成都10614元、重庆10388。 1、成都招聘样本数全量36301个&#xff0c…

在家AIAA(美国航空航天学会)文献如何查找下载

今天有位同学的求助文献来自AIAA&#xff08;美国航空航天学会&#xff09;&#xff0c;下面就讲一下不用求助他人自己就可搞定文献下载的途径并实例操作演示。 首先我们先对AIAA&#xff08;美国航空航天学会&#xff09;数据库做个简单的了解&#xff1a; 美国航空航天学会…

C语言:(动态内存管理)

目录 动态内存有什么用呢 malloc函数 开辟失败示范 free函数 calloc函数 realloc函数 当然realooc也可以开辟空间 常⻅的动态内存的错误 对NULL指针的解引⽤操作 对动态内存开辟的空间越界访问 对⾮动态开辟内存使⽤free释放 使⽤free释放⼀块动态开辟内存的⼀部分 …

网络安全宣传 | 干货满满,这些网络安全知识请牢记!

随着社会信息化深入发展 互联网对人类文明进步将发挥更大促进作用 但与此同时&#xff0c;互联网领域的问题也日益凸显 网络犯罪、网络监听、网络攻击等时有发生 网络安全与每个人都息息相关 下面 一起来了解网络安全知识吧 网络安全是什么&#xff1f; 网络安全&#x…

2、Tomcat 线程模型详解

2、Tomcat 线程模型详解 Tomcat I/O模型详解Linux I/O模型详解I/O要解决什么问题Linux的I/O模型分类 Tomcat支持的 I/O 模型Tomcat I/O 模型如何选型 网络编程模型Reactor线程模型单 Reactor 单线程单 Reactor 多线程主从 Reactor 多线程 Tomcat NIO实现Tomcat 异步IO实现 Tomc…

重学java 56. Map集合

我们要拥有一定成功的信念 —— 24.6.3 一、双列集合的集合框架 HashMap 1.特点: a.key唯一,value可重复 b.无序 c.无索引 d.线程不安全 e.可以存null键,null值 2.数据结构:哈希表 LinkedHashMap&#xff08;继承HashMap&#xff09; 1.特点: a.key唯一,value可重复 b.有序 c.无…

特征工程技巧—Bert

前段时间在参加比赛&#xff0c;发现有一些比赛上公开的代码&#xff0c;其中的数据预处理步骤值得我们参考。 平常我们见到的都是数据预处理&#xff0c;现在我们来讲一下特征工程跟数据预处理的区别。 数据预处理是指对原始数据进行清洗、转换、缩放等操作&#xff0c;以便为…

Redis中大Key与热Key的解决方案

原文地址&#xff1a;https://mp.weixin.qq.com/s/13p2VCmqC4oc85h37YoBcg 在工作中Redis已经成为必备的一款高性能的缓存数据库&#xff0c;但是在实际的使用过程中&#xff0c;我们常常会遇到两个常见的问题&#xff0c;也就是文章标题所说的大 key与热 key。 一、定义 1.1…

Vulnhub项目:THE PLANETS: MERCURY

1、靶场地址 The Planets: Mercury ~ VulnHubThe Planets: Mercury, made by SirFlash. Download & walkthrough links are available.https://vulnhub.com/entry/the-planets-mercury,544/ 这好像是个系列的&#xff0c;关于星球系列&#xff0c;之前还做过一个地球的&a…

毕业论文word常见问题

0、前言&#xff1a; 这里的问题都是以office办公软件当中的word为例&#xff0c;和WPS没有关系。 1、页眉横线删不掉&#xff1a; 解决方案&#xff1a;进入页眉编辑状态&#xff0c;在开始选项栏中选择页眉字体样式&#xff0c;清除格式。 修改方式如下&#xff1a; 2、…

从网路冲浪到three.js+cannon.js

从网路冲浪开始 网络浏览器的发展史可以追溯到互联网的早期,随着时间的推移,浏览器已经经历了多次重大的变革和发展。 以下是网络浏览器发展史的一个简要概述: 1. 早期的文本浏览器 1990年:蒂姆伯纳斯-李(Tim Berners-Lee)开发了第一个网络浏览器WorldWideWeb(后来更名…

【十二】图解mybatis日志模块之设计模式

图解mybatis日志模块之设计模式 概述 最近经常在思考研发工程师初、中、高级工程师以及系统架构师各个级别的工程师有什么区别&#xff0c;随着年龄增加我们的技术级别也在提升&#xff0c;但是很多人到了高级别反而更加忧虑&#xff0c;因为it行业35岁年龄是个坎这是行业里的共…

【轻松搞定形象照】助你打造编程等级考试、竞赛专属二寸靓照,报名无忧,展现最佳风采!

更多资源请关注纽扣编程微信公众号 ​ 在数字化时代&#xff0c;拍照似乎变得轻而易举&#xff0c;但当我们需要一张特定规格的一寸照片时&#xff0c;事情就变得复杂起来。随着编程等级考试和各类信息学竞赛的日益临近&#xff0c;不少考生都为了一张符合要求的一寸照片而忙…

2.2 OpenCV随手简记(三)

图像的阈值处理定义 &#xff1a;将图像转化为二值图像&#xff08;黑白图&#xff09;, 也可以用于彩色图形&#xff0c;达到夸张的效果 目的&#xff1a;是用来提取图像中的目标物体&#xff0c;将背景和噪声区分开&#xff08;可以近似的认为除了目标全是噪声&#xff09;。…

Capto 标准版【简体中文+Mac 】

Capto 是一套易于使用的屏幕捕捉、视频录制和视频编辑 Capto-capto安装包-安装包https://souurl.cn/DPhBmP 屏幕录制和教程视频制作 记录整个屏幕或选择的任何特定区域。在创建内容丰富的教程视频时选择显示或隐藏光标。无论您做什么&#xff0c;都可以确保获得高质量的视频。…

C# WinForm —— 24 Threading.Timer 组件介绍与使用

1. 简介 System.Threading.Timer 多线程 轻量级 精度高 提供以指定的时间间隔对线程池线程执行方法的机制 和System.Timers.Timer 类似&#xff0c;每隔一段时间触发事件&#xff0c;执行操作(不是由UI线程执行的)&#xff0c;即使事件中执行了比较耗时的操作&#xff0c;也…

教育新基建背景下的光网校园:安徽中澳科技职业学院以太全光网建设之路

作者/安徽中澳科技职业学院 网络中心 刘正峰 安徽中澳科技职业学院隶属于安徽省科技厅,是一所公办高等职业院校。学院在“德厚三分,技高一筹”的校训指引下,坚持“开放性、精品化、技能型”的发展理念,坚持“贴近市场需求、强化实践教学、突出办学特色、培养实用人才”的办学思…