electron-vue 开发问题合集
(一)Found ‘electron’ but not as a devDependency, pruning anyway
原因:对electron没有严格要求的话可以忽略,不影响打包,但会影响第三方库的使用,应使用推荐库进行打包。
修改 .electron-vue/webpack.renderer.config.js 文件
// let whiteListedModules = ['vue']
let whiteListedModules = ['vue', 'electron']
(二)Multispinner is not defined
原因:在 electron -vue 的模板中,没有引入 multispinner 相关的依赖,对 multispinner 依赖重新安装,并在 build.js 文件中加入引用。
命令行安装 multispinner
npm install multispinner -D
在 .electron-vue/build.js 文件中引入 multispinner
const Multispinner = require('multispinner')
(三)Build:Identifier 'tasks'has already been declared
原因:在 .electron-vue/build.js 中重复申明了tasks,导致在打包时报错,所以需要对其中至少一个tasks 进行重命名。
修改 .electron-vue/build.js 文件
// const tasks = ['main', 'renderer']
// const m = new Multispinner(tasks, { ...
const tasks1 = ['main', 'renderer']
const m = new Multispinner(tasks1, { ... // const tasks = new Listr( ...
// await tasks
const tasks2 = new Listr( ...
await tasks2
(四)electron-packager --打包命令的参数设置
"scripts": {
"package": "electron-packager ./ app --all --out ./out --electron-version 2.0.18 --overwrite --icon=./src/renderer/assets/images/icon"
}
/**
*
* electron-packager <sourcedir> <appname> <platform> <architecture> <electron version> <optional options>
*
* 参数说明:
* sourcedir:项目所在路径
* appname:应用名称
* platform:确定了你要构建哪个平台的应用(Windows、Mac 还是 Linux)
* architecture:决定了使用 x86 还是 x64 还是两个架构都用
* electron version:electron 的版本
* optional options:可选选项
*
**/
打包成功如下:

根据配置在项目根目录下生成 CloudPrint 文件夹:


(五)自定义 ico 图标
注意:必须使用软件处理后生成的 .ico 文件,不能直接修改后缀名得到 .ico 文件(因为通过修改其他格式图片的后缀生成的 .icon 文件在打包时会报错!!!)。
(六)打包成功运行桌面应用白屏
修改 .electron-vue/webpack.renderer.config.js 文件
// nodeModules: process.env.NODE_ENV !== 'production' ? path.resolve(__dirname, '../node_modules') : false
nodeModules: path.resolve(__dirname, '../node_modules')
(七)打包时 resource busy or locked, rmdir 'D:\www\g******\***\***-win32-ia32'
原因:当前打包的项目有正在运行的已打包程序,确定关闭后重新打包 。打包时关闭正在运行的已打包程序。
(八)mac环境的包需要在Mac上进行打包!!!
(九)macOS“自动更新”必须要使用苹果开发者证书进行签名!!!
(十)npm run build:web 报错:can‘t resolve 'fs'
修改 webpack.web.config.js 文件
// target: 'electron-main'
// target: 'web'
target: 'electron-renderer'
(十一)实现点击任务栏图标显示/隐藏客户端

(十二)Linux环境命令行报错 `node ./postinstall.js`

// 解决方法:将electron下载地址指向taobao镜像 npm config set electron_mirror "https://npm.taobao.org/mirrors/electron/" cnpm install
(十三)生产环境下启用应用程序的开发者工具
// 打开
mainWindow.webContents.openDevTools() // 分离状态打开
mainWindow.webContents.openDevTools({ mode: 'detach' }) // 在窗口左侧打开
mainWindow.webContents.openDevTools({ mode: 'left' }) // 在窗口右侧打开
mainWindow.webContents.openDevTools({ mode: 'right' }) // 在窗口底部打开
mainWindow.webContents.openDevTools({ mode: 'bottom' })
(十四)主进程对静态文件的访问
如下:主进程设置图标路径,需根据开发环境和生成环境的不同而不同。
要求:dev环境下添加icon.png至/src/renderer/assets/images ; pro环境下添加icon.png至/static 。
// main/index.js // 窗口、任务栏、托盘等图标的路径设置
icon: process.env.NODE_ENV === 'development' ? path.join(__dirname, '../renderer/assets/images/icon.png') : path.join(__static, './icon.png')
日常开发中不会将相同图片copy两次放不同位置,可通过build配置拷贝静态文件到所需位置。
修改 webpack.renderer.config.js 、webpack.web.config.js 文件
// .electron-vue/webpack.renderer.config.js 和 .electron-vue/webpack.web.config.js
// if (process.env.NODE_ENV === 'production') {
// ...
//
// rendererConfig.plugins.push(
// ...
//
// new CopyWebpackPlugin([
// {
// from: path.join(__dirname, '../static'),
// to: path.join(__dirname, '../dist/electron/static'),
// ignore: ['.*']
// }
// ])
//
// ...
// )
// }
if (process.env.NODE_ENV === 'production') {
...
rendererConfig.plugins.push(
...
new CopyWebpackPlugin([
{
from: path.join(__dirname, '../static'),
to: path.join(__dirname, '../dist/electron/static'),
ignore: ['.*']
},
{
from: path.join(__dirname, '../src/renderer/assets/images/icon.png'),
to: path.join(__dirname, '../dist/electron/static/icon.png')
}
])
...
)
}
electron-vue 开发问题合集的更多相关文章
- 超全的 Vue 开源项目合集,签收一下
超全的 Vue 开源项目合集,签收一下 xiaoge2016 前端开发 1周前 作者:xiaoge2016 链接: https://my.oschina.net/u/3018050/blog/2049 ...
- win7win8 64位汇编开发环境合集安装与设置
win7win8 64位汇编开发环境合集安装与设置 下载 win7 win8 64位汇编开发环境.rar 下载地址(免积分下载) http://download.csdn.net/detail/li ...
- Electron+Vue开发跨平台桌面应用
Electron+Vue开发跨平台桌面应用 xiangzhihong发布于 2019-12-23 虽然B/S是目前开发的主流,但是C/S仍然有很大的市场需求.受限于浏览器的沙盒限制,网页应用无法满足某 ...
- vue指令示例合集
vue所有指令练习合集.这是个html文件,用chrome打开可查看结果. <!DOCTYPE html> <html lang="en" xmlns:v-on= ...
- 使用electron+vue开发一个跨平台todolist(便签)桌面应用
# 1 最近一直在使用electron开发桌面应用,对于一个web开发者来说,html+javascript+css的开发体验让我非常舒服.之前我一直简单的以为electron只是张网页加个壳,和那些 ...
- VUE相关资料合集
===官方=== https://github.com/vuejs/vue vue-components组件库 ---PC端--- https://github.com/ElemeFE/element ...
- electron vue 开发客户端程序
文档知识点 https://electronjs.org/docs/tutorial/about (1)Electron通过将Chromium和Node.js合并到同一个运行时环境中,并将其打包为Ma ...
- php最好的开发工具合集
欲先攻其事必先利其器,新接触pphp的小伙伴们,你们可要注意阅读本文了哦! 常见好用的php开发工具汇总 1.SublimeText3 工具简介: Sublime Text是一款目前非常流行的代码编辑 ...
- Android辅助开发工具合集
https://github.com/389273716/android-skill-summary/blob/master/开发工具使用指南/辅助开发工具.md
随机推荐
- Spring Cloud Alibaba - Gateway
Gateway Gateway简介 底层使用Netty框架,性能大于Zuul 配置gateway模块,一般使用yaml格式: server: port: 80 #spring boot actuato ...
- Longhorn 云原生分布式块存储解决方案设计架构和概念
内容来源于官方 Longhorn 1.1.2 英文技术手册. 系列 Longhorn 是什么? 目录 1. 设计 1.1. Longhorn Manager 和 Longhorn Engine 1.2 ...
- 遇到的JDBC的一些简单错误
遇到的JDBC的一些简单错误 复习java swing的使用的时候,把东西都写好了,但是在进行数据库连接的时候,出现了错误 java.lang.ClassNotFoundException: com. ...
- VsCode安装使用教程和插件安装方法
许多渗透方式都python写脚本,比较方便,写一下vscode和插件的安装办法,虽然不是很复杂,但是写一下做一下笔记: Visual Studio Code (简称 VS Code / VSC) 是一 ...
- dockerfile中ENTRYPOINT与CMD的结合
一.写在前面 我们在上篇小作文docker容器dockerfile详解对中dockerfile有了比较全面的认识,我们也提到ENTRYPOINT和CMD都可以指定容器启动命令.因为这两个命令是掌握do ...
- 浅谈模拟彩票代码,html,javascript
今天简单介绍一下用html,javascript来模拟双色球彩票选择器. 双色球彩票规则:由6个红球和1个蓝球组成,其中6个红球是从1-33中随机选出的不重复的6个数,从小到大一次排列:蓝球是1-16 ...
- 【mysql】mysql逻辑框架简介及show profile说明
1.mysql逻辑框架简介 和其它数据库相比,MySQL 有点与众不同,它的架构可以在多种不同场景中应用并发挥良好作用.主要体现在存储引擎的架构上,插件式的存储引擎架构将查询处理和其它的系统任务以及数 ...
- vue去掉一些烦人的校验规则
例如:括号前没有加空格报错,很难受 如何处理呢,故意犯错,然后打开页面出现错误信息,如下图复制错误 space-before-function-paren 找到项目中的.eslintrc.js 添加一 ...
- ubuntu编译安装python3.6.5
去官网下载安装包放到~/software/ 下 1更新软件库 sudo apt-get update 2安装相应的开发库 sudo apt-get install zlib1g-dev libbz ...
- REST设计风格:你写的 RESTful API 到第几层了?
理解REST 在理解其真正概念前,我们先来明确: REST它的核心思想是面向资源的抽象(相对于RPC就是面向过程抽象),它是一种设计风格的指导,而非具有较强约束的协议. REST源于Roy Thoma ...