Электрон: Как ссылаться на глобальный объект BrowserWindow в другом файле? - PullRequest
0 голосов
/ 25 января 2019

Я пытаюсь сослаться на глобальную переменную window (содержащую объект Electron BrowserWindow) в другом файле, который я включаю с помощью require (). Но это не работает, и я не уверен, почему.

В моем файле 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 уже определен как глобальная переменная, почему он не определен в другом файле? Я пытался делать разные вещи, такие как инъекция, экспорт и т. Д., Но это всегда не определено. Я не уверен, что здесь не так, и хотел бы помочь.

1 Ответ

0 голосов
/ 25 января 2019

Вам нужно будет экспортировать функцию, которая возвращает шаблон

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)        
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...