Я новичок в Electron и пытаюсь найти лучший способ обработки общего объекта.
По сути, я хочу инициализировать что-то один раз в главном процессе, а затем использовать его в нескольких процессах рендеринга, например:
// main.js
const node = rosnodejs.initNode(); // returns a promise
// renderer1.js
node.then((nh) => {
nh.subscribe("topic1");
})
// renderer2.js
node.then((nh) => {
nh.subscribe("topic2");
})
Я смог поделиться node
с помощью remote
, но затем nh.subscribe
становится анонимной функцией в моих средствах визуализации и завершается ошибкой. Вот что я делаю:
// main.js
global.node = rosnodejs.initNode(); // returns a promise
global.node.then((nh) => {
nh.subscribe("topic1"); // WORKS PERFECTLY!
})
// renderer1.js
const remote = require('electron').remote;
const node = remote.getGlobal('node');
node.then((nh) => {
nh.subscribe("topic2"); // FAILS MISERABLY.
})
Сообщение об ошибке Error: Could not call remote function 'subscribe'. Check that the function signature is correct. Underlying error: type.datatype is not a function
.
Есть ли достойный способ справиться с этим? Должен ли я использовать ipcMain
/ ipcRenderer
вместо?