我目前正在做一个电子项目,让我的脚湿与技术。到目前为止,我发现它非常有趣和有趣,我正在为我的物联网设备构建一个小型家庭控制器,虽然它是初级的,但我现在遇到了一个小问题。我在main.js中有一个函数,它向我的Philips Hue Bridge设备发出请求,以获取它连接到它的所有灯的列表。我正在使用以下函数:
function refreshLight() {
console.log('Searching for lights');
const HEADER = {
'hue-application-key': `${HUE_KEY}`,
'Content-type': 'text/plain'
};
const URL = `https://${HUE_IP}/clip/v2/resource/device`;
axios.get(URL, {
headers: HEADER,
httpsAgent: agent
})
.then((response) => {
const lights = [];
for (const item of response.data.data) {
for (const service of item.services) {
if (service.rtype === 'light') {
const light = {
rid: service.rid,
name: item.metadata.name,
id_v1: item.id_v1
};
lights.push(light);
}
}
}
const jsonData = JSON.stringify(lights);
mainWindow.webContents.send('lights-data', jsonData);
})
.catch((e) => {
console.error(e);
});
}
当renderer.js函数发生时,请求被触发,从main.js我得到了我所期望的JSON对象,然而,当我试图在renderer.js端接收它时,如下所示:
ipcRenderer.on('lights-data', (event, jsonData) => {
console.log('Trying to display data');
console.log(jsonData);
});
这是预加载:
const { contextBridge, ipcRenderer } = require('electron');
contextBridge.exposeInMainWorld('ipcRenderer', {
send: (channel, data) => ipcRenderer.send(channel, data),
on: (channel, func) => ipcRenderer.on(channel, (event, ...args) => func(...args))
});
这就是我得到的结果
任何帮助或指针将是伟大的!先谢谢你了!
1条答案
按热度按时间vsdwdz231#
您共享的预加载显示您的
on
函数没有将event
传递给回调。您得到undefined
,因为您没有记录正确的参数。这应该可以工作: