В моем проекте Electron я пытаюсь сделать модуль одноэлементным, установив его как глобальный. Так как я использую jquery
в этом модуле, я импортирую его в процесс рендеринга, а затем отправляю его на главную через ipc и устанавливаю там как глобальный. Вот связанная часть моего кода:
main.js:
ipcMain.on( "setGlobal", ( event, global_var) => {
global[global_var[0]] = global_var[1];
console.log(global_var);
event.returnValue = 1;
} );
renderer.js:
const favourites = require("./components/favourites");
console.log(favourites);
ipcRenderer.sendSync("setGlobal", ["favourites", favourites]);
console.log(remote.getGlobal("favourites"));
Вывод console.log
с в процессе рендеринга показан на рисунке ниже:
А вывод основного процесса:
[ 'favourites', { favourites: [] } ]
Как видите, объект (модуль), который я отправил с ipcRenderer, изменился в ipcMain, он потерял свои функции add
и init
. У вас есть идеи, что является причиной такого поведения и как это исправить?
PS: Конечно, я протестировал его с простыми объектами, которые содержат функции вместо require("favourites")
. Они также ведут себя так же. Я сделал обходной путь, используя только объекты как глобальные и передавая их всем функциям в качестве аргументов. Тем не менее, это не очень хороший способ чтения кода.