The electron 11 VUE-CLI4 packing icon is missing??

Open backbackground. Js setting icon: ${__static}/ icon name. Ico,

Tray = new tray (path.join(${__static}, “./ icon name. Ico “)); You can pack up and go home


My background.js, casually configured for reference only

"use strict";

import {
    app,
    protocol,
    BrowserWindow,
    screen,
    Menu,
    Tray,
    ipcMain,
    dialog,
    ipcRenderer,
} from "electron";

import {createProtocol} from "vue-cli-plugin-electron-builder/lib";
// import installExtension, {VUEJS_DEVTOOLS} from "electron-devtools-installer";
import path from "path"; const isDevelopment = process.env.NODE_ENV ! = ="production";

// Scheme must be registered before the app is ready
protocol.registerSchemesAsPrivileged([
    {scheme: "app", privileges: {secure: true, standard: true}}]);let tray = null;

async function createWindow() {
    // Create the browser window.
    let width=screen.getPrimaryDisplay().workAreaSize.width ;
    let height=screen.getPrimaryDisplay().workAreaSize.height ;
    const win = new BrowserWindow({
        // width: 800,
        // height: 600,
        width: width,
        height: height,
        x: 0,
        y: 0,
        // frame: false,
        // transparent: true,
        // fullscreen: true,
        // alwaysOnTop:true,
        // backgroundColor:"#42b983",
        icon: `${__static}/heart.ico`,
        title: "remember",
        webPreferences: {
            // devTools: false,
            // Use pluginOptions.nodeIntegration, leave this alone
            // See nklayman.github.io/vue-cli-plugin-electron-builder/guide/security.html#node-integration for more info
            // nodeIntegration: process.env.ELECTRON_NODE_INTEGRATION
            nodeIntegration: true,
            webSecurity: false}}); // win.setIgnoreMouseEvents(true)
    Menu.setApplicationMenu(null);
    if (process.env.WEBPACK_DEV_SERVER_URL) {
        // Load the url of the dev server if in development mode
        await win.loadURL(process.env.WEBPACK_DEV_SERVER_URL);
        if(! process.env.IS_TEST) win.webContents.openDevTools(); }else {
        createProtocol("app");
        // Load the index.html when not in development
        win.loadURL("app://./index.html"); } / /if(! isDevelopment) { // tray = new Tray(path.join(__dirname,'./public/heart.ico'))
    // } else {
        tray = new Tray(path.join(`${__static}`, "./heart.ico"));
    // }

    const contextMenu = Menu.buildFromTemplate([
        {
            label: "Quit", click: function () {
                win.close()
            }
        },
        {label: "Open",click: function () {
                win.show()
            }},
    ]);
    tray.setToolTip(
        "one day you’ll leave this world behind" +
        "So live a life you will remember"
    );
    tray.setContextMenu(contextMenu);
    tray.on("click", () => {
        win.show();
        win.setSkipTaskbar(false)}); ipcRenderer.send("browser-window-height",height)
}

// Quit when all windows are closed.
app.on("window-all-closed", () => {
    // On macOS it is common for applications and their menu bar
    // to stay active until the user quits explicitly with Cmd + Q
    if(process.platform ! = ="darwin") { app.quit(); }}); app.on("activate", () => {
    // On macOS it's common to re-create a window in the app when the // dock icon is clicked and there are no other windows open. if (BrowserWindow.getAllWindows().length === 0) createWindow(); }); // This method will be called when Electron has finished // initialization and is ready to create browser windows. // Some APIs can only be used after this event occurs. app.on("ready", async () => { if (isDevelopment && ! process.env.IS_TEST) { // Install Vue Devtools // try { // await installExtension(VUEJS_DEVTOOLS); // } catch (e) { // console.error("Vue Devtools failed to install:", e.toString()); // } } createWindow(); }); // Exit cleanly on request from parent process in development mode. if (isDevelopment) { if (process.platform === "win32") { process.on("message", data => { if (data === "graceful-exit") { app.quit(); }}); } else { process.on("SIGTERM", () => { app.quit(); }); On ("open-chart-dialog", function (event) {dialog.showOpenDialog({properties: ['openFile', 'multiSelections'], filters: [ {name: 'Images', extensions: ['jpg', 'png', 'gif']} ] }).then(result => { // console.log(result.canceled) // console.log(result.filePaths) if (! Canceled) // tells the renderer to pass the obtained file path to the Vue component response function event.sender. Send ("open-finished", result); }).catch(err => { console.log(err) }) });Copy the code