2016-09-23 3 views
0

Ok, also habe ich ein reguläres eckiges cli-projekt mit webpack für prod gebündelt/gebaut und dann den inhalt eines dist-ordners genommen und in ein anderes projekt mit express installiert.
Code:
Bundeled eckig 2 app mit express

var express = require('express'); 
var app = express(); 
var path = require('path'); 

app.get('/', function(req, res) { 
    res.sendFile(__dirname + '/' + 'index.html') 
}); 

app.listen(3000, function() { 
    console.log('Example app listening on port 3000!'); 
}); 

Das Problem ist, dass, wenn ich dies ausführen ich eine "loading ..." erhalten Seite, wenn sie auf: // localhost: 3000/und sonst nichts. Wenn ich Konsole überprüfen, erhalte ich diese Fehler

[Es kann keine Ressource laden: der Server mit einem Status von 404 geantwortet (nicht gefunden): // localhost: 3000/inline.js
fehlgeschlagen Ressource laden: der Server reagierte mit dem Status 404 (Not Found): // localhost: 3000/styles.b52d2076048963e7cbfd.bundle.js
Fehler beim Laden der Ressource: Der Server reagierte mit dem Status 404 (Not Found): // localhost: 3000/main.d27eab344e583f765067.bundle.js
ausgefallene Ressource laden: der Server mit dem Status 404 reagierte (nicht gefunden): // localhost: 3000/styles.b52d2076048963e7cbfd.bundle.js
ausgefallene Ressource laden: der Server geantwortet mit dem Status 404 (nicht gefunden): // localhost: 3000/main.d27eab344e583f765067.bundle.js]

Wer kann das umgehen oder das Problem herausfinden? jede Hilfe wird sehr geschätzt. Der Grund, warum ich das mache, ist, dass, sobald die App in Produktion geht, ich keinen Zugriff auf "npm" habe, also habe ich keinen der ang-cli-Befehle, sondern nur Knotenbefehle. Auch die Implementierung von Socket IO ist ein weiterer Grund, warum wir den Express-Weg eingeschlagen haben. Wenn es einen alternativen Weg gibt, kannst du es mir bitte mitteilen.

Danke

Antwort

0

Sie müssen Rest der statischen Dateien dienen, wie Sie gerade jetzt index.html senden.

Setzen Sie Ihre Winkel App in einem Verzeichnis, zum Beispiel öffentlich und dies tun:

app.use(express.static('public')); 
app.get('/', function(req, res) { 
    res.sendFile(__dirname + '/public' + 'index.html') 
}); 
0

Die Lösung, die ich für dieses Problem gefunden ist, die zwei Komponenten in separaten Verzeichnissen zu setzen, und bauen sie auf diese Weise (don ‚t vergessen, bevor er zu Ihrem comp Verzeichnis zu ändern, jedes Mal).

ng build --base-href /first/dist 
ng build --base-href /second/dist 

dann haben Sie Ihre beiden Komponenten in zwei verschiedenen Verzeichnissen

in Eil:

app.use(
    '/first', 
    express.static(
     path.join(__dirname,'first', 'dist') 
    ) 
); 

und

app.use(
    '/second', 
    express.static(
     path.join(__dirname,'second', 'dist') 
    ) 
); 

sollen Sie eine bessere Lösung sein, aber ich habe es noch nicht finden

Hope it

Gregoire hilft - Sie finden Baustelle arbeiten es auf www.agenda.tools