eletron相关链接:https://www.electronjs.org/zh/docs/latest/breaking-changes#removed-remote-module
在docs声明:“基本规则是:如果模块与GUI或低级系统相关,则它应仅在主进程l中可用。”,若在渲染进程中使用main process需要通过remote模块。
eletron14.0以下,使用以下引入
const { BrowserWindow } = require('electron').remote
eletron14.0以上引入方式发生了改变,以下官方提供的代码
// 替换为:
const { BrowserWindow } = require('@electron/remote')
// 在主进程中:
require('@electron/remote/main').initialize()
虽然官方写的很简短,但是通过不停的踩坑,不停的尝试,最终修改步骤如下。
一、查看是否有remote模块
若无则输入
npm i -D @electron/remote
二、在主进程中添加以下语句(备注添加语句)
function createWindow () {
require('./main/tray.js')
const win = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
preload: path.join(__dirname, 'preload.js'),
// 开启node
nodeIntegration: true, //添加语句
contextIsolation: false, //添加语句
// 开启remote
enableRemoteModule:true //添加语句
}
})
require('@electron/remote/main').initialize() //添加语句
require('@electron/remote/main').enable(win.webContents) //添加语句
win.loadFile('./main/index.html')
}
app.whenReady().then(() => {
createWindow()
})
三、在所使用的js中通过该格式引入
const {BrowserWindow} =require('@electron/remote')