0

我正在使用 Electron 和 vue 开发一个应用程序。

我使用这个解决方案在 main 和 render 之间进行通信,所以我有三个文件preload.js,main 和 renderer。

// preload.js
const { contextBridge, ipcRenderer } = require("electron");

contextBridge.exposeInMainWorld("api", {
    send: (channel, data) => {
        // whitelist channels
        let validChannels = ["msgbox", "loadall", "savekv", "saveall"];
        if (validChannels.includes(channel)) {
            ipcRenderer.send(channel, data);
        }
    }
});
// main
const { ipcMain, dialog } = require('electron')
ipcMain.on("msgbox", (event, args) => dialog.showMessageBox({ message: args }))
ipcMain.on("saveall", (event, config) => dialog.showMessageBox({ message: config }))
// renderer
test() {
  window.api.send("saveall", "hahaha");  // <- does not work
  window.api.send("msgbox", "haha");     // <- work
}

但是,在渲染文件中,window.api.send("msgbox", "haha");有效而window.api.send("saveall", "hahaha");无效。

Electron 版本 13.6.6 macOS Monterey 12.1

4

0 回答 0