这是main.js文件,也就是主进程文件
const electron = require("electron"); //引入electron
const remote = require("@electron/remote/main"); //引入remote,引入之前需要安装 npm i -D @electron/remote
remote.initialize();//初始化
const app = electron.app; //引用app
const BrowserWindow = electron.BrowserWindow; //窗口引用
let mainWindow = null; //声明要打开的主窗口
app.on("ready", () => {
mainWindow = new BrowserWindow({
width: 300,
height: 300,
webPreferences: {
//设置开启渲染进程中使用nodejs
nodeIntegration: true,
contextIsolation: false,
},
});
mainWindow.loadFile("index.html"); //加载index.html
//设置关闭窗口时,销毁窗口
mainWindow.on("closed", () => {
mainWindow = null;
});
//启用remote模块
remote.enable(mainWindow.webContents);
});
这是渲染进程文件ipcRenderer文件
const remote = require("@electron/remote");
const Menu = remote.Menu;
var menuContextTemplate = [
{
label: "复制",
role: "copy",
},
{
label: "粘贴",
role: "paste",
},
];
var menuBuilder = Menu.buildFromTemplate(menuContextTemplate);
window.onload = () => {
window.addEventListener(
"contextmenu",
(e) => {
e.preventDefault();
console.log("鼠标点击了右键");
menuBuilder.popup({
window: remote.getCurrentWindow(),
});
},
false
);
};
对于require is not defined 报错
主要原因是在启动窗口时,没有在webPreferences里面加上
nodeIntegration: true,
contextIsolation: false,
加上就不报错了