我是Electron的新手,他试图找出处理共享对象的最佳方法。
基本上,我想在Main进程中初始化一次,然后在多个渲染器进程中使用它,就像这样:
// 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
吗?