Aka*_*iya 7 ipc node.js typescript electron
在我的电子应用程序中,我收到错误“在 EventEmitter../lib/renderer/api/ipc-renderer.ts.ipcRenderer.invoke 处没有为“通道名称”注册处理程序 ( Electron/js2c/renderer_init.js:1163 :19)”。IPC 句柄未注册,渲染器和主进程之间的通信未按 Windows 中的预期进行。
当我从 Windows 安装程序打开应用程序时,我看到此问题,并且从 Windows 上的应用程序打开应用程序时,它是间歇性的。
这是我如何使用 ipc 句柄/调用的代码片段。
在 Main.ts 文件中
import {ipcMain} from 'electron';
private registerIpcChannels(ipcChannels: IpcChannelInterface[]) {
try {
for(const channel of ipcChannels) {
ipcMain.handle(channel.getName(), async (event, request) => await channel.handleInvoke(event, request))
}
} catch (err) {
log.error(`Unable to register IPC channels: ${err.message}`, err);
}
}
Run Code Online (Sandbox Code Playgroud)
在 Renderer.js 文件中:
import electron from 'electron';
sendMessage(msg) {
let ipc = electron.ipcRenderer;
ipc.invoke(channelName, msg);
}
Run Code Online (Sandbox Code Playgroud)
我不明白为什么它在 MacOS 上工作得很好,但在 Windows 上却不行。我按照文档在电子应用程序中实现句柄/调用。环境信息:Electron - v8.5.2 Nodejs - v12.16.1 操作系统 - Windows 10
注意:这仅在首次启动时发生。刷新或退出并重新打开应用程序后,它可以正常工作
任何人都可以帮助找出为什么会出现这个问题吗?
pul*_*0ne 10
我也有同样的问题。我的问题是,在注册 IPC 处理程序之前,我指示 Electron 导航到我的应用程序。它只发生在第一次加载而不是后续加载/重新加载(和热重新加载)时的原因是因为 BrowserWindow 正在重新创建并且我的 IPC 处理程序已经注册(并在我的代码中重新注册)。
因此,请绝对确保您的处理程序在 BrowserWindow 加载调用 IPC 通道的渲染器代码之前已注册。
| 归档时间: |
|
| 查看次数: |
9440 次 |
| 最近记录: |