Electron 从低版本升级到高版本 - 开始使用@electron/remote的改造教程

众所周知,在使用老版本的Electron时,很多模块都是集成在一起的,后面随着版本迭代,一些模块慢慢的被剥离出来了,然后升级Electron的时候,用到这些模块的代码都要改造,今天就来讲讲如何在升级之后同步改造remote。

🙋‍♀️🌰:我的Electron是6.1.7(有够老的了,只有x86包,没有arm包,所以很多时候不用考虑架构问题,因为他就只支持一种架构),还不支持js的可选链语法(就是那种?.类的语法),导致在使用webview的时候渲染这种第三方页面就出问题了,解析错误,所以只能硬着头皮升级一下Electron,来,就搞到28.3.3吧(要升级一下node到v20哦)。

1.肯定就是要install 一下 electron@28.3.3的了

注意:如果是用mac M芯片的小伙伴,很可能有时候会遇到刚好你项目里面使用了自研的node包,升级完electron之后,发现需要arm的node包,而又刚好,你只有x86的node包,那么就只能安装一个x86的electron了。

bash 复制代码
npm i --arch=x64 electron@28.3.3

再装一下@electron/remote吧。

bash 复制代码
npm i @electron/remote

记得配套改一下babel.config.js和tsconfig.json

javascript 复制代码
// babel.config.js
{
    ...,
    presets: [
        ["@babel/preset-env", {
            targets: { electron: "28" }
        }
    ]
}
javascript 复制代码
// tsconfig.json

{
    ...,
    "types": [
      "@electron/remote"
    ]
}

好了,现在该改造一下使用到remote模块的地方了。

首先,在创建窗口之前,要初始化一下remote模块。

javascript 复制代码
// main/index.ts

...
import * as remoteMain from '@electron/remote/main'; // 主进程专用导入
...


constructor(){
    remoteMain.initialize();
}

然后在创建窗口之后,要激活一下remote。

javascript 复制代码
// 某个主进程文件

...
import * as remoteMain from '@electron/remote/main'; // 主进程专用导入
...


function create () {
    ...
    const win = new BrowserWindow(options);
    remoteMain.enable(win.webContents);
    ...
}

ok,能正常使用remote模块了,如果还有地方使用webview的,又要再改造一次,下次再写一篇文章来说说webview相关的改造(主要就是ipcMain和ipcRenderer的通信问题)。

相关推荐
小李小李不讲道理9 小时前
「Ant Design 组件库探索」五:Tabs组件
前端·react.js·ant design
毕设十刻9 小时前
基于Vue的学分预警系统98k51(程序 + 源码 + 数据库 + 调试部署 + 开发环境配置),配套论文文档字数达万字以上,文末可获取,系统界面展示置于文末
前端·数据库·vue.js
mapbar_front10 小时前
在职场生存中如何做个不好惹的人
前端
牧杉-惊蛰10 小时前
纯flex布局来写瀑布流
前端·javascript·css
一袋米扛几楼9811 小时前
【软件安全】什么是XSS(Cross-Site Scripting,跨站脚本)?
前端·安全·xss
向上的车轮11 小时前
Actix Web适合什么类型的Web应用?可以部署 Java 或 .NET 的应用程序?
java·前端·rust·.net
XiaoYu200211 小时前
第1章 核心竞争力和职业规划
前端·面试·程序员
excel11 小时前
🧩 深入浅出讲解:analyzeScriptBindings —— Vue 如何分析 <script> 里的变量绑定
前端
蓝瑟12 小时前
AI时代程序员如何高效提问与开发工作?
前端·ai编程
林晓lx12 小时前
使用Git钩子+ husky + lint语法检查提高前端项目代码质量
前端·git·gitlab·源代码管理