electron使用过程中方法和坑

本文分享了在Vue CLI创建的项目中集成Electron 11版本的经验,并详细介绍了如何解决渲染线程中引入Electron模块时出现的错误。通过调整Webpack配置目标,可以有效地避免混淆Node.js标准模块系统所带来的问题。

前言

刚今天把electron11版本集成到vueCli4.5创建的项目中,这里记录一下在集成过程中和平时使用时遇到的坑

问题:渲染线程renderer中引入Electron报错

报错内容:

fs.existsSync is not a function

原因:

因为webpack默认产出目标是web平台的js,其混淆了nodejs的标准模块系统,导致引入nodejs的模块时出现问题。

解决办法:

Error while importing electron in react | import { ipcRenderer } from 'electron'
Requiring electron outside of main.js causes a TypeError

即通过使用window.require代替require来引入electron,因为前者不会被webpack编译,在渲染进程require关键字就是表示node模块的系统;

其实,更佳的解决方案是通过webpack自身来帮我们解决,即修改webpack提供的target产出目标为electron,即:

修改electron主线程webpack的target配置项为electron-main
修改electron渲染线程的webpack的target配置项为electron-renderer
这样就可以更好的解决上面的问题。

方法:在浏览器环境中使用 nodejs api

electron将nodejs api挂载在了window对象上,来与底层进行通信,所以需要调用window上的require函数来引入 nodejs 包。

const electron = window.require('electron')
const process = window.require('process')
const fs = window.require('fs')
const Https = window.require('https')

方法:在浏览器环境中使用app对象

在electron主进程中使用app对象直接require electron就行了

const { app } = require('electron')

但是在渲染进程中使用app对象则需要这样引入:

const electron = window.require('electron')
const app = electron.remote.app
<think>嗯,用户想要在Electron项目中使用electron-simple-updater,需要具体的使用指南或示例代码。根据提供的引用内容,已经有两个参考资料,引用[1]直接指向该库的项目地址,引用[2]则包含Electron开发的环境配置项目搭建步骤。用户之前询问过这个库的使用方法,现在明确需要示例代码操作指南。考虑到用户可能已经搭建好Electron环境,重点应该放在集成这个自动更新库的具体步骤上。首先需要回忆electron-simple-updater的基本工作原理。这个库通过封装Electron的autoUpdater模块,简化了更新流程。核心步骤应该包括:安装依赖、主进程初始化、渲染进程触发检查、以及更新事件的监听处理。从引用[2]中可以看出用户环境是npm管理的Electron-Vite-Vue项目。因此示例代码需要适配这种技术栈:主进程使用CommonJS语法,渲染进程用Vue组件演示。要特别注意Vite项目的特殊配置,比如静态资源处理。更新流程的代码示例需要覆盖完整生命周期:1)配置检测更新的服务器地址;2)触发检查时显示状态;3)监听下载进度;4)提示安装重启。引用中提到过的镜像配置也很重要,因为自动更新依赖的electron-release-server服务可能需要镜像加速。用户可能遇到的是:证书配置(开发阶段需禁用签名校验)、生产环境路径问题、多平台兼容性处理。这些点应该在步骤中额外强调,比如建议使用http地址进行测试。最后需要关联引用源:项目文档对应引用[1],环境搭建Vite配置对应引用[2]。尤其是引用[2]提到的淘宝镜像,能显著加快electron模块下载速度。</think> 根据引用内容,以下是`electron-simple-updater`在Electron项目中的使用指南示例代码: --- ### 🛠 一、安装配置 1. **安装依赖**(在项目根目录执行): ```bash npm install electron-simple-updater --save ``` 2. **配置镜像加速**(解决国内下载慢问题): 修改npm配置文件(`npm config edit`)添加: ```ini electron_mirror=https://npmmirror.com/mirrors/electron/ ``` --- ### ⚙️ 二、主进程初始化(main.js) ```javascript const { app, BrowserWindow } = require('electron'); const updater = require('electron-simple-updater'); // 初始化更新器(必须放在创建窗口前) updater.init({ checkUpdateOnStart: true, // 启动时自动检查更新 autoDownload: false, // 手动触发下载 repo: 'your-github-repo' // 格式: username/repo }); function createWindow() { const win = new BrowserWindow({ /* 窗口配置 */ }); win.loadFile('index.html'); } app.whenReady().then(createWindow); ``` --- ### 🖥️ 三、渲染进程触发更新(renderer.js) ```javascript const updater = require('electron-simple-updater'); // 检查更新 document.getElementById('check-update').addEventListener('click', () => { updater.checkForUpdates(); }); // 监听更新状态 updater.on('update-available', () => { alert('发现新版本!'); updater.downloadUpdate(); // 手动下载 }); updater.on('update-downloaded', () => { if(confirm('更新已下载,是否立即安装?')) { updater.quitAndInstall(); // 重启应用安装更新 } }); // 显示进度条 updater.on('download-progress', (progress) => { console.log(`下载进度: ${Math.round(progress.percent)}%`); }); ``` --- ### 🔧 四、重要配置说明 1. **更新源配置**(通过`updater.init`参数): ```javascript updater.init({ repo: 'github_user/repo_name', // *必需* owner: 'github_user', token: 'github_personal_token' // 私有仓库需要 }); ``` 2. **签名验证**(Windows/macOS必需): ```javascript updater.init({ // ... verifySignature: true, // 默认开启 publicKey: '-----BEGIN PUBLIC KEY-----...' // 自定义公钥 }); ``` --- ### ⚠️ 五、常见问题解决 1. **开发模式禁用更新**: ```javascript if (!app.isPackaged) { updater = { checkForUpdates: () => {} } // 模拟空操作 } ``` 2. **更新文件404错误**: - 确保GitHub Releases存在对应平台的`.zip`(Windows)或`.dmg`(macOS)文件 - 版本号需遵循语义化规范(如`v1.0.0`) --- > 代码示例基于Electron + Vue技术栈,实际使用需结合项目框架调整事件绑定逻辑[^1]。环境配置建议参考npm镜像加速方案以保证依赖下载速度[^2]。 --- ### 🔍 相关问题 1. 如何处理`electron-simple-updater`在私有仓库的认证问题? 2. 更新过程中断时如何实现断点续传? 3. 如何自定义更新进度条的UI界面? 4. 应用未打包时如何模拟更新测试环境? 5. 如何在Electron-Vite项目中配置`electron-simple-updater`的预加载脚本?
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值