Angular 6 не может разрешить 'fs' и 'path' для использования электрона - PullRequest
0 голосов
/ 12 октября 2018

Я хочу использовать ipcRenderer в наборе текста проекта angular6 и общаться с электронным приложением через ipcMain.

Чтобы получить доступ к ipcRenderer в файле машинописного текста:

this.ipcRenderer = require('electron').ipcRenderer;
this.ipcRenderer.send('data:submit', '1');

Но когда ng build для углового проекта, возникает ошибка, что

ERROR in ./node_modules/electron/index.js
Module not found: Error: Can't resolve 'fs' in '/Users/xxxx/Developer/angular_bootcamp/ipcStudy/node_modules/electron'
ERROR in ./node_modules/electron/index.js
Module not found: Error: Can't resolve 'path' in '/Users/xxxx/Developer/angular_bootcamp/ipcStudy/node_modules/electron'

Многие посты упоминаютсяэтот угловой 6 больше не может использовать 'fs'.Но мне нужно использовать электрон и ipcRenderer, в любом случае, чтобы решить это?

Большое спасибо

1 Ответ

0 голосов
/ 25 июля 2019

Копирование ответа по ссылке, предоставленной OP:

1- Создать service:

import { Injectable } from '@angular/core';
import { IpcRenderer } from 'electron';

@Injectable({
  providedIn: 'root'
})
export class IpcService {
  private ipc: IpcRenderer | undefined = void 0;

  constructor() {
    if ((window as any).require) {
      try {
        this.ipc = (window as any).require('electron').ipcRenderer;
      } catch (e) {
        throw e;
      }
    } else {
      console.warn('Electron IPC was not loaded');
    }
  }

  public on(channel: string, listener: any): void {
    if (!this.ipc) {
      return;
    }

    this.ipc.on(channel, listener);
  }

  public send(channel: string, ...args): void {
    if (!this.ipc) {
      return;
    }
    this.ipc.send(channel, ...args);
  }
}

2- Используйте service внутри component:

export class TestComponent {

  constructor(private readonly ipc: IpcService) {
    this.ipc.on('my-event', (e, val) => {
      console.log('my-event: ' + val);
    });
  }

}

Важное примечание: Во время работы Angular в режиме разработки вы всегда получите ошибку Electron IPC was not loaded,по понятным причинам.Но как только вы соберете приложение и запустите его с Electron, все будет работать гладко и нормально.

Протестировано и проверено с Angular 8.1.0 и build --prod.

Все кредиты до оригиналавтор .

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...