MEAN app。两台服务器同时使用Express,NodeJS,Angular 2

时间:2017-01-24 02:33:12

标签: javascript node.js angular express mean-stack

我尝试将后端(NodeJS,Express)与前端(Angular 2)连接,但是有问题。

当我单独启动两个服务器时,客户端和服务器端都可以正常工作。 在我的情况下: localhost:4200 - Angular localhost:3000 - NodeJS,Express

当我在VIEWS文件夹中渲染任何静态html文件时,它可以正常工作,但是当我将html文件的内容更改为使用组件的Angular Index.html时,它不起作用。我的意思是,它可以工作,但不会加载我的组件。

我认为问题出在配置中,而我的index.html不知道如何查找和加载组件,但我不确切地知道错误的位置。

当我尝试在同一端口启动两台服务器时,我的前端部分停止工作。

我使用Angular-CLI,NodeJS,Express和EJS。

我的server.js代码是:

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);
});

在ROUTES文件夹中,我的index.js代码是:

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

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

module.exports = router;

我的文件夹结构: Picture of foldes

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

“ruen-app”是我的客户端(Angular 2)文件夹。

所以,我的问题是:

1)如何连接这两个部分?

2)同时启动两台服务器是正确的 - 一台用于前端,另一台用于后端?

3)MEAN应用程序从头开始的最佳实践是什么?我的意思是,最好的方法是什么 - 两个服务器还是一个?

1 个答案:

答案 0 :(得分:3)

花了3天时间,但找到了解决方案。 在stackoverflow上:

Different ports for frontend and backend. How to make a request?

Angular-CLI proxy to backend doesn't work