javascript - 为什么打包的 Electron 应用程序会由于 Menu.getApplicationMenu() 在使用 electro 运行时返回 null 而失败。还好吗?

标签 javascript node.js menu electron packager

在 Windows 10 上运行打包的 Electron 应用程序时出现奇怪的错误。 enter image description here

当我在此错误上按“确定”时,应用程序会启动,但没有菜单。如果我使用 electron . 运行相同的应用程序它工作完美,有一个菜单。

错误发生在这里:

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

我正在尝试编辑默认的"file"菜单并添加“构建项目”项。

这是我第一次尝试打包 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);
};

关于javascript - 为什么打包的 Electron 应用程序会由于 Menu.getApplicationMenu() 在使用 electro 运行时返回 null 而失败。还好吗?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48239072/

相关文章:

javascript - 如何在 NodeJS 中检索使用 CURL 传递的 POST 数据?

javascript - 如何在 Sails.js v0.11 中触发自定义套接字事件?

node.js - Redis - 经济拒绝。即使服务器正在运行

jquery - 我试图在悬停菜单的一个特定子项时更改菜单 css 样式。不熟悉 jQuery

html head 中的 javascript,innerhtml 不工作?

javascript - 从反向代理 nginx 服务器为多个 websocket 客户端提供服务

javascript - 用标签替换单选按钮?

java - 如何使用 JavaScript 显示托管 bean 的计时器?

javascript - 如何只让菜单出现在滚动条上?

java - 如何在扩展 JPanel 的类中添加用于加载/保存文件的菜单栏?