2016-01-06 12 views
5

Ich versuche, das ipcRenderer-Modul von Elektron in Typoskript zu bekommen, um Informationen von der aktuellen Komponente zum Kern zu senden und Informationen zurück zum Fenster zu erhalten (Elektron-Chrom-Browser). Alles, was ich bekomme, ist ein Fehler "Module nicht gefunden" durch Umcodieren des ts-Codes zu ES5.Wie man Elektronenmodul in Typoskript lädt

const ipc = require ('Elektron') ipcRenderer; `

Update:. Der Fehler zwischen dem schaltet "Modul nicht gefunden" und diese:

ERROR in ./~/electron/index.js Module build failed: Error: ENOENT, open '/.../node_modules/electron/index.js' @ ./app/components/search/search.ts 12:10-29

That ist von der aktuellen electron-api. Ich habe auch versucht, die Import-Syntax von Typoskript zu verwenden, aber das Ergebnis ist das gleiche.

Dann habe ich versucht, das electron.ipcRenderer Modul in einer ES5-Datei zu verwenden, direkt in der HTML-Datei geladen/verlinkt.

Dort hat es funktioniert. Warum?

+0

haben Sie versucht, das Elektronenkompilierungsmodul zu verwenden, das Unterstützung für TS und ES6 und alle hat? – frosty

Antwort

4
+3

Kannst du bitte ein bisschen mehr erklären, wie du es repariert hast? :) – stephanec

+2

In meinem Fall verwende ich Webpack, um Typoskript-Code zu es5 zu transcodieren, auf diese Weise habe ich eine 'webpack.config.js'-Datei. In dieser Konfiguration müssen Sie die Konfigurationsdatei über 'webpackTargetElectronRenderer (config)' an 'config.target' senden. sollte es so aussehen: 'var config = {.....}; config.target = webpackTargetElectronRenderer (config); module.exports = config; ' –

1

Dann habe ich versucht, das electron.ipcRenderer Modul in einer ES5-Datei zu verwenden, direkt in der html-Datei geladen/verlinkt.

Wenn es in html funktioniert aber nicht in ts es bedeutet, dass der Fehler nicht in const ipc = require('electron').ipcRenderer; ist. Der Fehler ist am likelyy im Import, den Sie Ihre Datei von HTML laden müssen (und nicht require('electron')).

2

Da Elektronen Abhängigkeit im Browser App ist nicht real, das heißt es nicht von node_modules ist webpacked sondern in Laufzeit geladen, verursacht die erfordern Anweisung Fehler wie „fs“ nicht gefunden mich.

auch immer Sie das Typoskript mit diesem Trick kann:

if (typeof window['require'] !== "undefined") { let electron = window['require']("electron"); let ipcRenderer = electron.ipcRenderer; console.log("ipc renderer", ipcRenderer); }

Auch wenn Sie einen Web-App schreiben, die nur durch Elektronen erhöht wird, wenn es im Innern läuft, ist dies ein besserer Weg, da Sie don Wenn Sie die Kommunikationsteile verwenden, müssen Sie Ihrer Webanwendung kein Elektron als Abhängigkeit hinzufügen.

+0

Vielen Dank, dies ist nicht offensichtlich und unter dokumentiert. Ich habe Stunden dafür gesucht.Ich denke, es gibt wahrscheinlich eine elegantere Lösung, aber das bringt mich wieder in Bewegung. – digitaldreamer