原因
在Electron中, GUI 相关的模块 (如 dialog、menu 等) 仅在主进程中可用, 在渲染进程中不可用
若想要在渲染进程中使用dialog等GUI模块需要通过remote模块进行链接(remote 模块为渲染进程(web页面)和主进程通信(IPC)提供了一种简单方法)
官方文档写着几种情况下remote模块会被禁用:
而BrowserWindow配置时,enableRemoteModule默认为false(详情见文档):
解决方法
手动设置webPreferences中的enableRemoteModule为true:
const win = new BrowserWindow({
width: 900,
height: 600,
webPreferences: {
nodeIntegration: true,//该选项启用Node API,可以在页面中使用node中的require方法
//由于安全问题,remote模块默认关闭
enableRemoteModule: true,//开启remote模块
}
})