我正在使用电子和遇到的问题,我不能为我的生活修复,尽管它是如此简单,我收到的数据显示为未定义的渲染器,但正确显示时console.log(数据)在主。
我所要做的就是让main读取一个.JSON文件,并将其内容发送到渲染器以进行存储和使用。
以下是渲染器代码:
let table_data
ipcRenderer.send('request_data');
ipcRenderer.on('activity_data', (event, activityData) => {
console.log('Data received');
console.log(activityData);
//This returns undefined
});
ipcRenderer.on('activity_data_error', (event, error) => {
console.error('Error fetching activity data:', error);
});
下面是主代码:
// Respond to ipc Renderer request activity_data
ipcMain.on('request_data', (event, data) => {
try {
const rawData = fs.readFileSync('renderer/js/activity_data.json', 'utf8');
const activityData = JSON.parse(rawData);
console.log('activity_data', activityData);
//This returns correct JSON data
event.reply('activity_data', activityData);
} catch (error) {
console.error('Error reading or parsing JSON file:', error);
event.reply('activity_data_error', error);
}
});
1条答案
按热度按时间afdcj2ne1#
你使用ipc的方式看起来很过时。在renderer中使用ipcRenderer.invoke(),在main中使用ipcMain.handle()。
https://www.electronjs.org/docs/latest/tutorial/ipc
如果根本不调用handle()/on(),也可能会有帮助:在main中,将ipcMain.on()和ipcMain.handle()放在browserWindow.loadURL()之前。