Electron使用remote报错

xiaohai 2021-05-14 12:33:26 5459人围观 标签: Electron 
简介Uncaught TypeError: Cannot destructure property 'Menu' of 'remote' as it is undefined.

为了实现在渲染进程中创建右键菜单,但是如果直接使用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')