Я пытаюсь подать электронное заявление с 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);
}