簡體   English   中英

Electron - ipcRenderer 在 main.js 中不工作

[英]Electron - ipcRenderer not working in main.js

我就是想不通。 如果我是正確的,通常你在主文件中使用“ipcMain”(在我的例子中是 main.js)。 但是我使用冒號-ide,而 ipcMain 是在其他地方定義的。 我想創建一個新的 window。 創建新 window 所需的一切都在 main.js 文件中,但信號在其他地方。 所以我需要向 main.js 發送一個“create-window”信號。 事實上,我是從一個定義了 ipcMain 的文件中發送它的。

這就是問題所在:在 main.js 中,我使用以下內容:

const ipc = require('electron').ipcRenderer;
ipc.on('someSignal', function (event, structure) {
     console.log("something");
});

我收到一個錯誤,即未定義的 ipc。

當我使用以下內容時:

const ipc = require('electron').ipcMain;
ipc.on('someSignal', function (event, structure) {
    console.log("something");
});

什么都沒發生。 它不聽,而且我相信我應該只有一個 ipcMain,所以這一定是錯誤的。

我究竟做錯了什么? 如果您需要更多代碼,請告訴我。

為了詳細說明,讓我向您展示:我有一個functions.js文件,其中調用了事件。 請忽略“結構”變量。

const ipc = require('electron').ipcMain;

function someFunction() {
    console.log("function is invoked");
    let structure = 0;
    mainWindow.webContents.send('someSignal', structure);
}

“someFunction”在某個時候被調用 - 我在控制台中收到“函數被調用”消息,所以這部分工作。

editor.js中定義了 ipcRenderer,如果我將監聽器 function 放在這里:

const ipc = require('electron').ipcRenderer;

ipc.on('someSignal', function (event, structure) {
    console.log("something");
});

有用。 “某事”被打印出來。

但是,我需要在main.js文件中添加監聽器,因為那是我的 function 用於創建新 windows 的地方。 但是偵聽器在那里不起作用。 如果我使用 ipcRenderer,如果我執行 ipc.on function,它將保持未定義並引發錯誤。 如果我使用 ipcMain 它會被定義(typeof 返回一個對象),所以看起來這就是我必須使用的。 但什么也沒有發生。

這是因為我試圖在 2 個 ipcMain 之間發送消息嗎? 我可能會嘗試使用全局 function 作為解決方法。

要在 BrowserWindow 中訪問require("electron") API,您需要在構造函數中啟用nodeIntegration

var myWindow = new BrowserWindow({
  width:600,
  height:400,
  // --- below here ---
  webPreferences:{
    nodeIntegration:true
  }
  // --- above here ---
});

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM