Как мне связаться между моей Angular 8 службой и основным процессом Electron? - PullRequest
0 голосов
/ 25 января 2020

Я пытаюсь подать электронное заявление с Angular 8. Я следовал вместе с этим гидом , чтобы сделать это. Теперь я застрял в той части, где я могу заставить основной электронный процесс взаимодействовать с моим angular проектом. Я знаю, что должен использовать IPCRenderer от Electron, но не могу импортировать его в свой angular сервис.

Я последовал примеру в конце руководства, которое я упоминал ранее, но мой электронный ip c никогда не загружается. В примере на веб-сайте Malcoded выполняется оператор if для проверки загрузки Electron IP C. Если это не так, он запускает console.log('Electron IPC not loaded.'). Проблема в том, что мой IP C никогда не загружается.

Я также пробовал другие способы, такие как добавление этого в мой index.html файл:

<script>System.set('electron', System.newModule(require('electron')))</script>

Это привело к тому, что я выдавал такие ошибки как 'System' is not defined., поэтому я приступил к установке System JS, npm i systemjs. Теперь он может определить System, но теперь он дает мне: 'require' is not defined.

Любая помощь в получении моего Angular проекта для связи с основным электронным процессом была бы очень признательна.

Вот мой код:

(electron/main.ts):

import { app, BrowserWindow, ipcMain } from 'electron';

ipcMain.on('openModal', (e, arg) => OpenModal());

const OpenModal = () => {
    let modal = new BrowserWindow({ parent: MainWindow, modal: true, show: false });
    modal.loadURL('https://www.google.com/'); // I just chose a random website just for testing.
    modal.once('ready-to-show', () => modal.show());
}

Обратите внимание, что я не показываю весь код в моем файле electron/main.ts. Сегменты кода, такие как app.on('activate') или app.on('ready') или определение главного окна, не включены, поскольку они не имеют значения. Я только показываю фрагменты кода, связанные с моей текущей проблемой.

(ipc.service.ts):

import {IpcRenderer} from 'electron';

// inside IpcService class:
private ipc: IpcRenderer;
constructor(){}

public Send(Event, ...Args){
    this.ipc.send(Event, ...Args);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...