去年的还是有用的,大家继续看,今年再补充一些
Electron-Vue 异常处理方案 M1 和 Window10_electron异常处理-CSDN博客
代码gitee.com地址
electron-demo: electron 22 初始代码开发和讲解
升级electron为22版本(这个版本承上启下,比较好用,建议使用)package.json和package-lock.json
{"name": "electron-demo","version": "0.0.1","author": "wangsen <wangsen@zingfront.com>","description": "An electron Demo","license": null,"main": "./dist/electron/main.js","scripts": {"build": "node .electron-vue/build.js && electron-builder","build:dir": "node .electron-vue/build.js && electron-builder --dir","build:clean": "cross-env BUILD_TARGET=clean node .electron-vue/build.js","build:web": "cross-env BUILD_TARGET=web node .electron-vue/build.js","dev": "node .electron-vue/dev-runner.js","lint": "eslint --ext .js,.vue -f ./node_modules/eslint-friendly-formatter src","lint:fix": "eslint --ext .js,.vue -f ./node_modules/eslint-friendly-formatter --fix src","pack": "npm run pack:main && npm run pack:renderer","pack:main": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.main.config.js","pack:renderer": "cross-env NODE_ENV=production webpack --progress --colors --config .electron-vue/webpack.renderer.config.js","postinstall": "npm run lint:fix"},"build": {"productName": "electron-demo","appId": "e-demo","directories": {"output": "build"},"files": ["dist/electron/**/*"],"dmg": {"contents": [{"x": 410,"y": 150,"type": "link","path": "/Applications"},{"x": 130,"y": 150,"type": "file"}]},"mac": {"icon": "build/icons/icon.icns"},"win": {"icon": "build/icons/icon.ico"},"linux": {"icon": "build/icons"}},"dependencies": {"@electron/remote": "2.0.1","axios": "1.6.8","vue": "^2.6.11","vue-electron": "^1.0.6","vue-router": "^3.0.1","vuex": "^3.0.1","vuex-electron": "1.0.2"},"devDependencies": {"@types/classnames": "^2.2.6","@types/color": "3.0.0","@types/color-convert": "^1.9.0","@types/lodash": "4.14.144","@types/node": "12.12.54","ajv": "^6.5.0","babel-core": "^6.26.3","babel-eslint": "^8.2.3","babel-loader": "^7.1.4","babel-minify-webpack-plugin": "^0.3.1","babel-plugin-transform-runtime": "^6.23.0","babel-preset-env": "^1.7.0","babel-preset-stage-0": "^6.24.1","babel-register": "^6.26.0","cfonts": "^2.1.2","chalk": "^2.4.1","copy-webpack-plugin": "^4.5.1","cross-env": "^5.1.6","css-loader": "^0.28.11","del": "^3.0.0","devtron": "^1.4.0","electron": "22.3.18","electron-builder": "22.10.5","electron-debug": "^1.5.0","electron-devtools-installer": "3.2.0","file-loader": "^1.1.11","html-webpack-plugin": "^3.2.0","listr": "^0.14.3","mini-css-extract-plugin": "0.4.0","node-loader": "^0.6.0","style-loader": "^0.21.0","url-loader": "^1.0.1","vue-html-loader": "^1.2.4","vue-loader": "^15.2.4","vue-style-loader": "^4.1.0","vue-template-compiler": "^2.5.16","webpack": "4.28.3","webpack-cli": "3.2.1","webpack-dev-server": "^3.1.4","webpack-hot-middleware": "^2.22.2","webpack-merge": "^4.1.3"}
}
增加.npmrc electron和electron-builder镜像,不然安装包能让你装到怀疑人生
ELECTRON_MIRROR=https://npmmirror.com/mirrors/electron/
ELECTRON_BUILDER_BINARIES_MIRROR=https://npmmirror.com/mirrors/electron-builder-binaries/
npm可以设置代理,如果不会的,请自行搜索,这里就细讲了,有时候代理也不行就需要,在控制台,设置环境,不加这个,也能让你下载安装包下到怀疑人生,实在搞不了安装包问题的,可以私信我发node-modules
set http_proxy=http://127.0.0.1:7890 & set https_proxy=http://127.0.0.1:7890
vuex-electron 引用低版本的"electron-store": "^2.0.0",导致electron.remote报错,使得开启欢迎界面都打不开
得跑到node-modules下改写一下electron-store,还得安装@electron/remote这个包
'use strict';
const path = require('path');
const Conf = require('conf');const moduleSource = process.type === 'browser' ? require('electron') : require('@electron/remote');
const { app, shell } = moduleSource;class ElectronStore extends Conf {constructor(opts) {const defaultCwd = app.getPath('userData');opts = Object.assign({name: 'config'}, opts);if (opts.cwd) {opts.cwd = path.isAbsolute(opts.cwd) ? opts.cwd : path.join(defaultCwd, opts.cwd);} else {opts.cwd = defaultCwd;}opts.configName = opts.name;delete opts.name;super(opts);}openInEditor() {shell.openItem(this.path);}
}module.exports = ElectronStore;
改node-modules是不对的,但是先凑合启动起来再说
启动时,你会发现它非得安装一个vue-devtool插件,而且还是个manifest:2版本,最新的已经是manifest:3版本了,可以自己把安装包下载下来,但是这个会造成sandbox 环境报错,我觉得没啥用直接给注释了
另外 这个包也要升级,否则载入不正确
"electron-devtools-installer": "3.2.0"
插件的位置在,不过这里告诉了你怎么给渲染进程加插件的方法,windows想快速找这个路径,用everything搜索
C:\Users\senzo\AppData\Roaming\Electron\extensions\nhdogjmejiglipccpnnnanhbledajbpd
还有个热更新报错,这个去年已经讲了,这里就不再赘述,改了即可
另外就是electron 22版本,安全性加了很多,渲染进程默认不能调用electron api,必须开启contextIsolation:false,这个设置在webview中也有很大作用,这里不赘述
此外,上面说的那个@electron/remote库的使用,也必须将远程开起来,不然这个库无法使用
主进程再配三段代码,才能在渲染进程中使用,这样看vuex-electron还是挺好的,这样主进程的数据变动,就可以影响所有的渲染进程了,以后还是可以探索探索的
最后再说一个,打开devtools,如果默认有菜单的话,就是不自动展开,必须把菜单关掉,才能每次dev时都打开
electron 这东西文档乱七八糟,版本迭代飞快,里面技术还多得不得了,但强大是真的强大,好用是真的好用,头疼是真的头疼,搞不好就内存泄漏了,问题多多,踩坑多多,后期我把代码整理号了,发到gitee上,再追加上来