NodeJS 学习Electron,尝试从main向renderer发送数据,但在renderer中显示为未定义,任何帮助非常感谢

sh7euo9m  于 2023-05-28  发布在  Node.js
关注(0)|答案(1)|浏览(259)

我正在使用电子和遇到的问题,我不能为我的生活修复,尽管它是如此简单,我收到的数据显示为未定义的渲染器,但正确显示时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);
    }
  });
afdcj2ne

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()之前。

相关问题