2016-11-03 3 views
0

Ich habe eine Knoten-Anwendung mit Express. Ich benutzte Express-Generator, um ein Standard-Express-Setup zu generieren.Wie angular 2 Dateien in Express Sub-App geladen werden

Ich habe zwei Unteranwendungen erstellt, die ich "ang" und "admin" (auch mit dem Express-Generator) nennen werde. Diese Unteranwendungen sind in einer anderen Expressanwendung enthalten, die ich "Host" nennen werde.

„Ang“ - Behandelt eine angular2 Anwendung sowie ihre jeweiligen api (api mit ausdrücklicher gemacht)

„Admin“ - Auf diese Weise können die Website-Betreiber neue Inhalte Datenbank hinzuzufügen, dass die API-Schnittstellen mit.

Das funktioniert gut in meiner lokalen Entwicklungsumgebung, aber wenn ich dies auf Heroku schiebe, werden bestimmte Module nicht installiert (dh die "admin" -App enthält keine spezifischen Module) und der Build schlägt fehl.

Nach dem Kopieren der relevanten Abhängigkeiten von den Sub-apps package.jsons (sowohl von Express-Sub-Apps als auch der ang2 package.json) konnte ich den Admin-Teil der Website ausführen, konnte aber nicht "ang "da es bei der Suche nach Knotenmodulen auf 404 Fehler stoßen würde.

"host app.js"

/*required modules*/ 
var app = express(); 

/*Boths paths reference different sub apps*/ 
var ang = require('./path/to/app.js'); 
var admin = require('./path/to/app.js'); 

/*Routes each app uses*/ 
app.use('/base', admin); 
app.use('/', ang); 

module.exports = app; 

Wie kann ich dem Weg zu den Knoten-Module innerhalb der "host" App enthalten?

Antwort

0

Also nach dem Entfernen von node_modules von meinem localhost und dem Versuch, es zu bauen, verstand ich, warum ich die Pakete nicht finden konnte, indem ich die Pfade in der index.html meiner ang2 App änderte.

Meine Angular2-App ist in einem statischen Verzeichnis enthalten. Also musste ich die Leistung des Node Package Managers (npm) nutzen. Also habe ich die package.json meiner "Host" App geändert. Ich änderte das "Skripte" Feld aus:

"scripts": { 
    "start": "node ./bin/www" 
} 

zu

"scripts": { 
    "start": "node ./bin/www", 
    "postinstall": " cd /path/from/host/to/ang/client_directory && npm install" 
}, 

Nach dem Host-App package.json "post" Befehl Installation ausgeführt wird. Weitere Informationen finden Sie unter npm's scripts documentation. Dies wird cd in das Verzeichnis und dann laufen npm installieren von dort, die angular2 package.json finden wird.

ALSO: Ich bin mir nicht sicher, ob das Verschieben aller Abhängigkeiten von den anderen package.json-Dateien notwendig ist, wenn Sie einfach das post-install-Feld richtig einrichten.

Hoffe, das spart Ihnen einige Probleme!

Verwandte Themen