为了实现在渲染进程中创建右键菜单,但是如果直接使用remote,运行程序会报如下错误:Uncaught TypeError: Cannot destructure property 'Menu' of 'remote' as it is undefined.
从v9版本开始,remote除非将设置enableRemoteModule为true,否则不允许在渲染器上使用。所以在主进程main.js中,需要设置该属性:
//其他代码...
app.on('ready', () => {
require('./menu.js')
mainWindow = new BrowserWindow({
width: 800,
height: 400,
webPreferences: {
nodeIntegration: true,
contextIsolation: false,
enableRemoteModule:true,//添加即可解决问题
}
})
//其他代码...
})
如果只是修改了上面,我们继续使用
const { Notification } = require('electron').remote
会提示(electron) The remote module is deprecated
,因为remote将被废弃,替代它的是需要参考:@electron/remote
@electron/remote的使用
#1、先安装
npm install --save @electron/remote
#2、在主进程中进行初始化
require('@electron/remote/main').initialize()
#3、渲染进程中使用
// in the renderer process:
// Before
const { BrowserWindow } = require('electron').remote
// After
const { BrowserWindow } = require('@electron/remote')