Почему упакованное приложение Electron дает сбой из-за того, что Menu.getApplicationMenu() возвращает ноль при запуске его с электроном. Это хорошо?

Я получаю странную ошибку при запуске упакованного приложения Electron в Windows 10.

Когда я нажимаю Ok на этой ошибке, приложение загружается, но без меню. Если я запускаю то же самое приложение, используя electron . работает отлично, есть меню.

Ошибка происходит здесь:

var filemenu = Menu.getApplicationMenu().items[0].submenu;
filemenu.items[0].visible = false;
filemenu.append(new MenuItem({ label: 'Build Project', click: function () { buildProject(); } }));

Я пытаюсь отредактировать меню "Файл" по умолчанию и добавить пункт "Создать проект".

Это моя первая попытка упаковать приложение Electron, поэтому я приветствую любые отзывы о том, что пошло не так?

1 ответ

Решение

Кажется, что меню по умолчанию не добавляется в приложение при работе.

Решение состоит в том, чтобы проверить, если вы находитесь в разработке:

https://www.npmjs.com/package/electron-is-dev

// Check if we are in development
var isDev = require('electron-is-dev');

Если в производстве, вы должны построить меню с нуля.

if(isDev){
    // In development
    // modify existing menu
}else{
    // In production
    // construct menu from scratch
    var template = [
            {
                label: "File",
                submenu: [
                    {
                        label: "Exit",
                        click: function () { quit(); }
                    }
                ]
            },
            {
                label: "Project",
                submenu: [
                    {
                        label: "Delete",
                        click: function () { deleteProject(); }
                    },
                    {
                        label: "Build",
                        click: function () { buildProject(); }
                    }
                ]
            }
        ];        
    // build menu from template
    var menu = Menu.buildFromTemplate(template);    
    // set menu for main window
    mainWindow.setMenu(menu);
};
Другие вопросы по тегам