You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Electron中ipcRenderer.on接收主进程数据显示undefined问题排查

问题分析与解决

问题出在预加载脚本对ipcRenderer.on的封装逻辑上:

你的预加载代码中,在监听IPC事件时,只把数据参数传递给了渲染进程的回调函数,丢失了原生的event对象,导致渲染进程的参数接收错位:

// 原预加载代码的问题点
on: (channel, func) => ipcRenderer.on(channel, (event, ...args) => func(...args))

渲染进程的回调定义是(e, data) => {...},此时第一个参数e会接收到你发送的name值,第二个参数data自然就变成了undefined。


修复方案二选一:

方案1:保持Electron原生参数结构(推荐)

修改预加载脚本,把event对象和数据参数一起传递给渲染进程的回调:

contextBridge.exposeInMainWorld("ipcRenderer", {
    send: (channel, ...args) => ipcRenderer.send(channel, ...args),
    on: (channel, func) => ipcRenderer.on(channel, (event, ...args) => func(event, ...args))    
});

这样渲染进程原有的代码无需修改,就能正常接收event和data。

方案2:调整渲染进程的回调参数

如果你不需要在渲染进程中使用event对象,可以直接简化回调的参数定义:

ipcRenderer.on("updateSave", (data) => {
    console.log("data: " + data);
})

内容的提问来源于stack exchange,提问作者plex

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.04 04:10:29