2017-01-24 2 views
1

Ich versuche Backend (NodeJS, Express) mit Frontend (Angular 2) zu verbinden, habe aber ein Problem.MEIN app. Zwei Server gleichzeitig Express, NodeJS, Angular 2

Wenn ich zwei Server getrennt starte, funktionieren sowohl clientseitige als auch serverseitige. In meiner Situation: localhost: 4200 - Angular localhost: 3000 - NodeJS, Express

Wenn ich eine statische HTML-Datei in meinem ANSICHTEN Ordner machen, funktioniert es richtig, aber wenn ich den Inhalt der HTML-Datei ändern Angular Index.html, das Komponenten verwendet, funktioniert es nicht. Ich meine, es funktioniert, aber lädt meine Komponenten nicht.

Ich nehme an, dass das Problem in der Konfiguration ist, und meine index.html weiß nicht, wie man Komponenten findet und lädt, aber ich verstehe nicht genau, wo ein Fehler sein könnte.

Wenn ich versuche, beide Server am selben Port zu starten, funktioniert mein Frontend-Teil nicht mehr.

Ich benutze Angular-CLI, NodeJS, Express und EJS.

Mein server.js Code ist:

var express = require('express'); 
var path = require('path'); 
var bodyParser = require('body-parser'); 

var index = require('./routes/index'); 
var tasks = require('./routes/tasks'); 

var port = 3000; 

var app = express(); 

app.set('views', path.join(__dirname, 'views')); 
app.set('view enjine', 'ejs'); 
app.engine('html', require('ejs').renderFile); 
app.use(express.static(path.join(__dirname, 'views'))); 

app.use(bodyParser.json()); 
app.use(bodyParser.urlencoded({ extended: false})); 

app.use('/', index); 
app.use('/api', tasks); 

app.listen(port, function() { 
    console.log('Server started on port ' + port); 
}); 

In den WEGE Ordner mein index.js Code ist:

var express = require('express'); 
var router = express.Router(); 

router.get('/', function(req, res, next) { 
    res.render('index.html'); 
}); 

module.exports = router; 

Meine Ordner-Struktur: Picture of foldes

node_modules 
routes 
ruen-app 
views 
package.json 
server.js 

" Ruen-App "ist mein Client (Angular 2) Ordner.

Also, meine Fragen sind:

1) Wie diese beiden Teile verbinden?

2) Ist es richtig zwei Server gleichzeitig zu starten - einen für das Frontend, einen anderen für das Backend?

3) Was ist die beste Vorgehensweise für MEAN-Anwendungen, um von Grund auf neu zu starten? Ich meine, was ist der beste Weg - zwei Server oder einer?

Antwort