election 28.1.4 踩坑
electron下载失败
npm install electron -d
解决:
新建.npmrc文件内容为:
electron_mirror=https://registry.npmmirror.com/-/binary/electron/
打包下载github包失败
build 的时候 命令执行electron-builder --mac
出现github上面的包下载不下来,即使开了vpn,但是浏览器却可以下载
解决
复制命令行上面提示的下载地址,浏览器下载github包后放到系统指定目录再次执行打包命令行就可以了,不同系统的目录
macOS: ~/Library/Caches/electron
Linux: ~/.cache/electron
windows: %LOCALAPPDATA%\electron\cache
macOS,打开终端输入 open ~/Library/Caches/electron,会车,就可以打开该目录
打包成功后,文件非常大
试一下macOS反编译app.asar包,
解决:
安装asar npm包
npm install asar -g
到打包后的目录,找到app.asa文件,在该目录打开终端,执行下面命令,在aaa目录下就能找到反编译后的内容
asar extract app.asar ./aaa
发现,把node_module包也打包进去了,我们需要移除node_module!
在package.json files配置里面把node_module目录排除
打包了一整个node_module,但是软件层面又需要某个包
解决:
把不需要的npm包移动到devDependencies,且移除build.files配置下面的"!node_modules”内容
extraFiles属性不适用该场景
Mac系统,x掉软件后,托盘图标还在,并且点击后不会出现新街main
解决:
app.on("window-all-closed", () => {
// if (process.platform !== "darwin") {
app.quit();
// }
});
Vue打包桌面应用后,界面空白
解决:
路由改为hash模式就可以了
html2canvas 图片重新定向
Electron拦截webview里的接口重定向本地文件_electron webview 重定向-CSDN博客
详解electron如何拦截网络请求并处理响应_node.js_脚本之家
Mac 未签名或者未上传到appstroe的dmg下载后提示 文件损坏
系统作妖!!
解决:
MacOS安装dmg提示已文件已损坏的解决方法
MacOS安装dmg提示已文件已损坏的解决方法_dmg提示损坏-CSDN博客
sudo xattr -d com.apple.quarantine /Applications/TxtMardown.app
Window 打包命令行要区64bit和32bit
如果和Mac一样一个命令行,在 build的target里面配置两个arch,他会把支持两个bit的包都打到一个文件,mac却是不会
解决
不要这样做:
"arch": [
"ia32",
"x64"
]
改为命令行分开
Win7上面安装报错:“electron 无法定位程序输入点 DiscardVirtuaMemory于动态链接库 KERNEL32.dll上”
解决
electron版本太高,降低版本:electron打包后在win7上打开异常KERNEL32.dll_getpackagefamilyname 无法定位-CSDN博客
window上面打包后,会空白小会在出现内容,打开软件会短暂空白0.1秒
解决
(效果一般,第一次点击图标后,可能好久才会出现窗口)
BrowserWindow | Electron 中文网
默认打开隐藏窗口,在ready-to-show事件里面才切换窗口显示
const { BrowserWindow } = require('electron')
const win = new BrowserWindow({ show: false })
win.once('ready-to-show', () => {
win.show()})
如果要兼容配置很低的电脑,可以关闭硬件加速
app.commandLine.appendSwitch('no-sandbox');
app.commandLine.appendSwitch('disable-gpu'); app.commandLine.appendSwitch('disable-software-rasterizer');
app.commandLine.appendSwitch('disable-gpu-compositing'); app.commandLine.appendSwitch('disable-gpu-rasterization');
app.commandLine.appendSwitch('disable-gpu-sandbox'); app.commandLine.appendSwitch('--no-sandbox'); app.disableHardwareAcceleration();
或者
这是浏览器加载和解析本地javascript时候需要一点点时间,index.html是已经读取了的,如果怀疑的话可以试下在index.html文件里面加点背景颜色,可以看到会先出现背景颜色,稍后才后内容
优化:
在index.html文件里面添加行内样式设置背景颜色和logo居中来提高体验,vscode就是这样的方式处理,默认黑色背景
vite打包后file协议跨域,因为它使用的是原生esmodule,遵循浏览器安全协议导致跨域
网络都推荐用@vitejs/plugin-legacy,但是这会让文件以来变大(额外打包了垫片),而且window10系统上还出现空白好久才出现vue内容的情况
解决
我们禁用了elecron的跨域就好了
app.whenReady().then(() => {
//来允许加载非安全内容和禁用 web 安全策略
app.commandLine.appendSwitch('allow-running-insecure-content');
app.commandLine.appendSwitch('disable-web-security');
})