gpt4 book ai didi

angular - Electron:错误:由于版本无效或不受支持,无法反序列化克隆数据

转载 作者:行者123 更新时间:2023-12-03 12:19:46 24 4
gpt4 key购买 nike

我有一个独立运行的 angular 应用程序,我正在尝试创建一个 Electron 应用程序,然后只执行:mainWindow.loadURL('http://localhost:4200/');它只是我的开发环境的本地主机,实际情况并非如此。

在 Electron 中,我将 nodeIntegration 设置为 true,这允许我的 angular 应用程序访问 ipc。

const mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
}
});

在 Angular 我有我的乒乓功能:
  public playPingPong() {
if(this._electronService.isElectronApp) {
console.log('Is electron.')
console.log(this._electronService.ipcRenderer);
let pong: any = this._electronService.ipcRenderer.sendSync('ping', 'ping');
console.log(pong);
}
}

尽管在使用标题中的错误记录 ipcRenderer 后,应用程序出错了:
core.js:5845 ERROR Error: Unable to deserialize cloned data due to invalid or unsupported version.
at EventEmitter../lib/renderer/api/ipc-renderer.ts.ipcRenderer.sendSync (ipc-renderer.ts:13)
at ArcMapComponent.playPingPong (arc-map.component.ts:61)
at ArcMapComponent.ngOnInit (arc-map.component.ts:164)
at callHook (core.js:3909)
at callHooks (core.js:3873)
at executeInitAndCheckHooks (core.js:3814)
at refreshView (core.js:11723)
at refreshDynamicEmbeddedViews (core.js:13070)
at refreshView (core.js:11728)
at refreshComponent (core.js:13145)

先感谢您!

最佳答案

我遇到过同样的问题。相信当你使用ipcRenderer.sendSync它期待一个返回值。

例如

渲染器 sendSync信息

ipcRenderer.sendSync("pong_channel", { type: "ping"});

这段代码只是向主进程发送了一条消息, channel 标识符为 pong_channel和一个 json 对象。

.on听众

ipcMain.on("pong_channel", (event, args) => {
if(args.type === "pong") {
print("Received pong successfully!")
}
event.returnValue = "received";
});

主要过程是监听 channel 并执行一个副作用。但关键是它通过 event.returnValue 返回了一个值。我遇到了同样的问题,但是一旦我设置了 returnValue,它就消失了。

我通常也将我的 channel 名称放在两个枚举中。一个包含主进程的所有消息,另一个包含渲染器的所有消息。这使事情比字符串更整洁。

我希望这有帮助!

关于angular - Electron:错误:由于版本无效或不受支持,无法反序列化克隆数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60683076/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com