我正在尝试在包含require()的另一个文件中引用全局window
变量(包含Electron BrowserWindow对象)。但这不起作用,我不确定为什么。
在我的main.js文件中,大致有:
const { BrowserWindow, Menu } = require('electron')
const menuTemplate = require('./menu')
const menu = Menu.buildFromTemplate(menuTemplate)
Menu.setApplicationMenu(menu)
let window
function createWindow() {
window = new BrowserWindow(...)
window.show()
}
然后,在我的menu.js文件中:
const template = [
{
label: 'File',
submenu: [
{
label: 'Log out',
click() {
window.webContents.on(...)
}
}
]
}
module.exports = template
但是当我尝试执行“注销”功能(通过单击该菜单项)时,收到关于未定义window
的错误。
由于window
已被定义为全局变量,为什么在另一个文件中未定义它?我尝试做各种事情,例如注入和导出等,但是它始终是不确定的。我不确定这里出了什么问题,希望您能帮上忙。
答案 0 :(得分:2)
您将必须导出一个返回模板的函数
module.exports = window => {
const template = [
{
label: 'File',
submenu: [
{
label: 'Log out',
click() {
window.webContents.on(...)
}
}
]
}
]
return template;
};
从main.js
文件中,您将需要这样的menu.js
模块
const menuTemplate = require('./menu')
function createwindow() {
window = new BrowserWindow(...)
window.show()
menuTemplate(window)
}