[英]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.