为什么打包的 Electron 应用程序因 Menu.getApplicationMenu() 返回 null 而 运行 返回 null 而失败 electron 。还好吗
Why does a packaged Electron app fail due to Menu.getApplicationMenu() returning null while running it with electron . is fine?
在 Windows 10 上 运行 打包 Electron 应用程序时,我收到一个奇怪的错误。
当我针对此错误按“确定”时,应用程序会启动,但没有菜单。如果我 运行 使用 electron .
相同的应用程序,它会完美运行,它有一个菜单。
这里出现错误:
var filemenu = Menu.getApplicationMenu().items[0].submenu;
filemenu.items[0].visible = false;
filemenu.append(new MenuItem({ label: 'Build Project', click: function () { buildProject(); } }));
我正在尝试编辑默认文件菜单并添加 "Build Project" 项。
这是我第一次尝试打包 Electron 应用程序,所以我欢迎任何关于哪里出了问题的反馈?
似乎在生产时没有将默认菜单添加到应用程序中。
解决方法是检查你是否在开发中:
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);
};
在 Windows 10 上 运行 打包 Electron 应用程序时,我收到一个奇怪的错误。
当我针对此错误按“确定”时,应用程序会启动,但没有菜单。如果我 运行 使用 electron .
相同的应用程序,它会完美运行,它有一个菜单。
这里出现错误:
var filemenu = Menu.getApplicationMenu().items[0].submenu;
filemenu.items[0].visible = false;
filemenu.append(new MenuItem({ label: 'Build Project', click: function () { buildProject(); } }));
我正在尝试编辑默认文件菜单并添加 "Build Project" 项。
这是我第一次尝试打包 Electron 应用程序,所以我欢迎任何关于哪里出了问题的反馈?
似乎在生产时没有将默认菜单添加到应用程序中。
解决方法是检查你是否在开发中:
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);
};