Использование модулей node.js в электронном - PullRequest
0 голосов
/ 06 мая 2018


У меня есть следующий вариант использования:
Я хочу разработать настольное приложение, которое будет работать на Raspberry Pi. Я решил использовать Electron для создания настольного приложения, а Angular - в качестве основы веб-интерфейса (1).

Мне нужно использовать некоторые модули npm для моего приложения, чтобы обмениваться данными с GPIO-контактами или через Ethernet-коммуникацию tcp (модуль «net»). Я пытался импортировать их в мое приложение Angular (например, import {Socket} из 'net';), но у меня они не работают.

Я получаю следующую ошибку при попытке построить сетевой сокет следующим образом: let client = new Socket();

Uncaught (в обещании): TypeError: undefined не является конструктором (оценка 'new net.Socket ()')

Это ошибка в базовой архитектуре, что я не могу запустить код, который зависит от серверной части, в угловом интерфейсе. Или я что-то не так делаю?

Я также нашел конденсатор (2), который позволяет вызывать родные SDKS. Я пытался реализовать свой собственный плагин, но получаю ту же ошибку, что и выше.

Спасибо за вашу помощь.

(1) https://angularfirebase.com/lessons/desktop-apps-with-electron-and-angular/
(2) https://capacitor.ionicframework.com/docs/plugins/

1 Ответ

0 голосов
/ 06 мая 2018

Похоже, у вас есть небольшая путаница с электроном , даже если это не классическая client:server модель, ...

Давайте сначала разберемся с Электроном:


Основные процессы и процессы рендерера

Основной процесс предназначен для обработки / создания BrowserWindows (Renderer) и для некоторого общения от одного окна рендерера к другому. (может быть, какой-то другой специальный материал тоже)

рендер - это то место, где вы действительно запускаете большую часть своего приложения. С узлом, у вас есть все, что вам нужно.

затем вы заметите, что вам понадобится канал между процессом (веб-страница) и основным процессом.

Не волнуйтесь, вот где remote пригодится:

Use main process modules from the renderer process.

Удаленный модуль обеспечивает простой способ межпроцессного взаимодействия (IPC) между процессом визуализации (веб-страницей) и основным процессом.

... даже наоборот ...

Примечание: для обратного (доступ к процессу рендерера из основного процесс), вы можете использовать webContents.executeJavascript .

Так что в конце вы сможете использовать всю магию с обеих сторон.

...