近段时间开发electron套壳应用挺多,顺手记一下这个比较恼人的问题。众所周知remote模块可以用来弹出系统级弹窗提示,有时不想自己写弹窗提示的时候就难免想用,但按照cv大法从其他博客获取的添加方法直接用下面代码添加:
require('electron').remote
那一定会喜提报错,原因即是electron为了保证安全性,给remote模块做出了以下改动:
1.在Electron10中,enableRemoteModule默认值改为了false,若使用remote模块需改为true。
2.remote模块在Electron12废弃,在Electron14被移除,由@electron/remote模块替代。
总之,解决方案很简单,首先使用npm安装@electron/remote模块:
npm install --save @electron/remote
然后首先需要在主进程中初始化@electron/remote模块,才能从渲染器中使用。
require('@electron/remote/main').initialize()
此外,还需要在主进程index.js中对应窗口的webPreferences中添加enableRemoteModule:true,
最后,将渲染进程内的require('electron').remote替换为require('@electron/remote')即可。
以使用对话框为例,需要修改为以下方式:
const { dialog } = require('@electron/remote') //?引入remote.dialog 对话框弹出api
完成后即可在渲染进程使用remote模块了。