2016-07-07 7 views
8

Ich habe ein neues Angular 2-Projekt mit dem neuen Angular CLI erstellt. Nun möchte ich Angular nicht im Browser, sondern in einer Elektronen-App verwenden. Daher habe ich eine Datei für den Hauptprozess des Elektrons erstellt und nach dem Erstellen meiner Angular App mit ng build im Terminal funktionierte die App nicht wie erwartet.Verwendung von Angular 2 mit Elektron (Angular CLI)

Datei für Haupt Prozess der Elektronen:

var electron = require("electron"); 
var {app, BrowserWindow} = electron; 

app.on('ready',() => { 
    var mainWindow = new BrowserWindow(); 
    mainWindow.loadURL(`file://${__dirname}/dist/index.html`); 
}); 

Fehler in DevTools:

file:///vendor/es6-shim/es6-shim.js Failed to load resource: net::ERR_FILE_NOT_FOUND 
file:///vendor/reflect-metadata/Reflect.js Failed to load resource: net::ERR_FILE_NOT_FOUND 
file:///vendor/systemjs/dist/system.src.js Failed to load resource: net::ERR_FILE_NOT_FOUND 
file:///vendor/zone.js/dist/zone.js Failed to load resource: net::ERR_FILE_NOT_FOUND 
index.html:22 Uncaught ReferenceError: System is not defined 

Ich weiß auch, dass Sie im Wesentlichen einen Web-Server benötigen Angular 2 Anwendungen laufen zu lassen, und ich denke, dass mein app tut funktioniert nicht, weil Electron die App über das file:// Protokoll lädt.

Aber ich möchte wirklich Elektron in Verbindung mit Angular 2 verwenden; Also meine Frage ist, ob das möglich ist und wenn ja, wie muss ich die generierte Angular Template vom cli-Dienstprogramm modifizieren.

+1

Erste Suchergebnis https://auth0.com/blog/2015/12/15/create-a-desktop- app-with-angular-2-and-electron/ – ishaan

+0

Ja, aber ich würde gerne wissen, wie man die Vorlage ändert, die von der Angular CLI erzeugt wird. – HansMu158

Antwort

9

Sie können auch

ändern
<base href="/"> 

zu

<base href="./"> 
-1

herunterladen angular.js aus dem CDN und legen Sie es in Ihrem App-Ordner. Dann in der HTML-Datei

<script type="text/javascript" src="angular.js"></script> 

Im Gegensatz zu einem Browser verwendet Elektron wird kein Problem haben Angularjs aus dem Dateisystem aufnimmt.

+0

Danke, aber ich bekomme immer noch die gleichen Fehler ... – HansMu158

+0

Kannst du uns deine index.html zeigen? –

5

Nach gestern etwas über die Winkel 2 Router lesen, habe ich herausgefunden, dass das Problem durch diese Linie in der

<base href="/"> 

index.html verursacht wird

indem sie mit einem dynamisch gesetzt Basis alles ersetzt wie erwartet funktioniert.

<script>document.write('<base href="' + document.location + '" />');</script>