gpt4 book ai didi

javascript - Electron:如何在另一个文件中引用全局 BrowserWindow 对象?

转载 作者:行者123 更新时间:2023-11-30 14:11:32 26 4
gpt4 key购买 nike

我试图在我用 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已经被定义为全局变量,为什么在其他文件中没有定义呢?我试过做各种事情,比如注入(inject)它和导出它等等,但它总是未定义。我不确定这里出了什么问题,希望得到一些帮助。

最佳答案

您必须导出一个返回模板的函数

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)
}

关于javascript - Electron:如何在另一个文件中引用全局 BrowserWindow 对象?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54356336/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com