Модули NodeJS не поддерживаются в Electron Web Workers - PullRequest
0 голосов
/ 30 ноября 2018

Я создаю настольное приложение, используя Electron в тандеме с ReactJS.

Я открываю новое, невидимое BrowserWindow из первого процесса визуализации, чтобы запустить другой процесс визуализации.В этом новом процессе рендеринга я регистрирую веб-работника, где периодически будет вызываться вызов API для получения данных.

Это код в теге HTML-скрипта невидимого окна, чтобы зарегистрировать веб-работника:

let installWebWorker = () => {
     console.log("installWebWorker()");
     if (typeof(Worker) !== "undefined") {
         console.log("Web worker supported");
         let monitorsWorker = new Worker("fetchMonitors.js");
     } else {
         console.log("Sorry! No Web Worker support...");
     }   
 }; //end installWebWorker()
 installWebWorker();

В самом работнике fetchMonitors.js мне требуется "Electron-is-dev"модуль узла для вызова вызова API в разработке.Для этого я использую require («электрон»). Remote.require («электрон»).Я получаю следующую ошибку:

Ошибка DevTools: DevTools Error

Эта ошибка заставляет меня поверить, что модули Electron NodeJS не поддерживаются веб-работниками.Электронная документация здесь говорит иначе, однако.

Ответы [ 2 ]

0 голосов
/ 03 декабря 2018

Я смог решить свою проблему.Оказывается, до тех пор, пока вы включаете nodeIntegration в своем фоновом окне для запуска веб-работника, вы на самом деле можете использовать NodeJS в веб-работнике.

Моя ошибка заключалась в том, что мне требовались узлы модулей через электронный.дистанционный пульт().В веб-приложении вы можете просто импортировать модули узла, как это обычно делается в узле, с помощью require ().

В этом репозитории подробно рассказывается, как использовать узловые модули в веб-работниках внутри Electron.

0 голосов
/ 01 декабря 2018

Отредактировал этот ответ, так как он был старой неверной информацией.

...