笔者正在开发的web项目,需要打包成应用到linux上去运行,于是想到用electron进行打包。这一句话听着很简单,但对我这个小白来说,中间发生了太多曲折。
我直接使用的是electron_builder这个工具进行打包,感觉是傻瓜式使用,用vue cli工具进行安装就可以了。
在安装完之后,package.json里会多出一些命令,告诉你打包运行之类的指令
。(后面的————mode 是我为了适配不同环境给的)直接运行npm run electron:build 打个windows环境的包。生成的包会在dist_electron文件夹里。
在win_unpacked这个包里可以看到exe文件,直接执行就行。
笔者得知我要运行的环境是在arm64的国产化系统主机上,所以要打一个arm的包。原本以为直接运行electron:arm就可以了,哪知道根本行不通。有一种解决方案是在docker里进行打包,但是笔者的解决方案在一台同样是arm架构的主机上进行打包。在打包的过程中,也出现了一些问题。如果electron的版本太老了的话,会拉不到(在打包过程中,它会去github去拉资源)。其实最严重的问题是fpm的问题,electron-builder 使用 fpm 进行打包,但是没有 arm64 架构的包,下载的是 x86 的包 ,x86在arm上没办法运行的。所以我们可以直接用sudo下载ruby,然后下载fpm,并在打包命令前指定使用本地的fpm
sudo apt-get install ruby-full
sudo gem install fpm
USE_SYSTEM_FPM=true electron-builder --arm64 --linux deb
这样就能打包完成了。在打包之后,我又想看下我网页端现在是怎么回事,但我npm run serve后网页一直报错,后来想起来在vue.config.js里面将target改成了electron的了,如果要在网页端运行就要改成web。所以我又定义了一个环境变量。
再回到arm64上的项目,在运行之后发现登录根本进不去。查找一番之后得知,是electron里面没有cookie,而我获取token的方式是从cookie里拿。所以我全部改成了从本地缓存中拿。这样跳转也没有问题了。
在项目测试的过程中发现文件下载,会打开一个空白窗口,很难看。这个是因为我使用的下载方式是通过wndows.open来处理下载连接。只要改成文件流的下载方式就可以了
。
关于应用的窗口大小,可以通过src下生成的background.js去修改。也可以设置全屏,也可以设置关闭应用的编辑栏。
就酱,写个日志下班了,🏃🏃🏃🏃🏃🏃🏃