再小的个体,也有大大的能量,上一篇从Haskell讲到函数式的精髓:“大事化小,小事化无”,问题总是有的,解决之道,就是从这些小小的集合中,蕴含着。
官网的FAQ:
https://electronjs.org/docs/faq
二进制文件在asar包中无法访问:
构建时需要在package.json文件中写上"asar":false,原因是electron打包时二进制文件在asar包中无法访问,如果上述设置无法解决,就只能硬编码,Mac规则如下:app.asar存在就直接引用,如果app.asar不存在,将路径替换成app.asar.unpacked,如果这个也不存在,需要根据不同的操作系统进行硬编码。
打包之后如何查看main进程中的日志:
可以通过/Applications/DingTalk Develper Tools.app/Contents/MacOS/DingTalk Develper Tools 来启动应用,至少能在主进程中将日志打印在终端里,有助于调试定位问题。
项目中不要引用无协议URL:
比如iconfont站给的iconfont引用的URL都是 //xxx ,由于打包之后协议会变成app://会造成iconfont无法显示,所以编写时,一定要写上协议如http://或https://。
理解ipc通信:
在开发的过程中,一定要理解“主进程”和“渲染进程”的概念,并且对ipc通信的方案了解清楚。因为如果想在两个“渲染进程”来处理共享的数据,这个时候就需要在主进程中持有,根据通信来共享,这很有用。
如何打包:
使用electron-builder或electron-packager,一般都有两种方式,全局或局部。全局的话就按照正常的Node.js全局模块安装即可,局部稍微写两行代码。
webview的使用:
全屏时需要设置width:100%,height:100%,这个必须依赖父容器。
缓存目录下载的问题:
electron与Node.js的一些缓存目录~/.electron-gyp ~/.electron ~/.node-gyp ~/AppData/Roaming/npm-cache/_prebuilds。如果下载某些文件死活下载不下来,那么只能通过其他方法下载下来然后放到对应的缓存目录。
编译C 的问题:
如果需要指定编译C 模块,那么可以使用node-gyp rebuild --target=1.7.6 --arch=x64 --dist-url=https://img.yuanmabao.com/zijie/pic/2019/06/24/gnju0rocy0l,这需要自己处理。