angular - Electron:错误:由于版本无效或不受支持,无法反序列化克隆数据
问题描述
我有一个独立运行的角度应用程序,并且正在尝试创建一个电子应用程序,然后就可以了:mainWindow.loadURL('http://localhost:4200/');
它只是我的开发环境的本地主机,它不会是真实的条件。
在电子中,我将 nodeIntegration 设置为 true,这允许我的 Angular 应用程序访问 ipc。
const mainWindow = new BrowserWindow({
webPreferences: {
nodeIntegration: true,
}
});
在角度我有我的乒乓球功能:
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"});
这段代码只是向主进程发送了一条带有通道标识符pong_channel
和 json 对象的消息。
主要.on
听众
ipcMain.on("pong_channel", (event, args) => {
if(args.type === "pong") {
print("Received pong successfully!")
}
event.returnValue = "received";
});
主要进程正在监听频道并执行副作用。但关键是它通过event.returnValue返回了一个值。我遇到了同样的问题,但是一旦我设置了returnValue,它就消失了。
我通常也将我的频道名称放在两个枚举中。一个将所有消息发送给主进程,另一个将所有消息发送给渲染器。这使事情比字符串更整洁。
我希望这有帮助!
推荐阅读
- elasticsearch - ElasticSearch 术语聚合不适用于自定义分析器和模式标记器
- rest - Websphere 8.5 中的 CXF Rest 服务
- mysql - 如何为每个类别检索一个随机行?
- java - 当我使用 SendKeys 在字段中发送日期并且当我运行脚本时,它会在该字段中粘贴两次日期
- python - 将方差分析结果转换为数据框
- python - 如何在 django 中使用移动 otp 验证用户注册?
- powershell - 在 Powershell 中将 JSON 转换为 Csv 列
- terraform - 使用 Terraform 将叶子接口附加到 Cisco ACI 上的 EPG
- python - 在 ubuntu 上,如何在现有的 python3.6(或更新版本)安装旁边安装 python3.5?
- apache-kafka - broker的数量和partition的数量会影响partition leader的选举吗?