gpt4 book ai didi

angular - 如何通过 Electron 桌面应用程序中的 IpcRenderer 从 Angular 特征组件向 Electron 主进程发送消息

转载 作者:行者123 更新时间:2023-12-03 12:41:27 26 4
gpt4 key购买 nike

我创建了 angular 8 和 Electron 桌面应用程序。当我通过 ipcRenderer 从根组件向 Electron 的 main.js 文件发送消息时,它工作正常。但是,当我从新生成的组件向 main.js 文件发送消息时,它会抛出“无法读取未定义的属性‘发送’”的错误。

下面是我的 write.component.html
<button (click)="write()">Click me</button>
我的 write.component.ts 文件

import { Component, OnInit } from '@angular/core';
import { IpcRenderer } from 'electron';
export class WriteComponent implements OnInit {
public ipcrenderer: IpcRenderer
ngOnInit() { }

write() {
this.ipcrenderer.on('message-to', (event, arg) => {
console.log("message-to" + arg)
});
this.ipcrenderer.send('message-from', 'hellooooooooooooo')
}
}

我的 main.js 文件
const { app, BrowserWindow, ipcMain } = require('electron')
const url = require("url");
const path = require("path");
const http = require('http')
let mainWindow

function createWindow() {
mainWindow = new BrowserWindow({
width: 800,
height: 600,
webPreferences: {
nodeIntegration: true
}
})

mainWindow.loadURL(
url.format({
pathname: path.join(__dirname, `/dist/index.html`),
protocol: "file:",
slashes: true
})
);
// Open the DevTools.
mainWindow.webContents.openDevTools()

mainWindow.on('closed', function () {
mainWindow = null
})
}

app.on('ready', createWindow)

app.on('window-all-closed', function () {
if (process.platform !== 'darwin') app.quit()
})

app.on('activate', function () {
if (mainWindow === null) createWindow()
})
ipcMain.on('message-from', (event, arg) => {
console.log(arg)
console.log("++++++++++++++++++++++++" + arg)
event.sender.send('message-to', "world");
})

最佳答案

用这条线public ipcrenderer: IpcRenderer您正在声明一个类型为 IpcRenderer 的变量.

但是你做不是 为该变量分配任何值。所以预计是undefinednull或诸如此类的事情。

所以你应该给它赋值该值应该从新生成的组件的构造函数中注入(inject)。

也许您可以向我展示根组件中的代码。

关于angular - 如何通过 Electron 桌面应用程序中的 IpcRenderer 从 Angular 特征组件向 Electron 主进程发送消息,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60667640/

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