如何从同一文件夹设置Angular2 CLI Project和Node.js应用程序

时间:2016-10-10 17:53:57

标签: javascript node.js angular

我使用angular2 cli创建了一个项目。我还创建了一个单独的节点js应用程序作为后端。我想将我的前端应用程序移动到节点应用程序中,以便我可以使用节点server.js运行这两个应用程序。我的server.js看起来像这样:

app.use(express.static(__dirname + '/app'));
...
app.get('*', function (req, res) {
    res.sendfile('./app/src/index.html');
});
app.listen(8000);

我对来自angular2 cli的index.html看起来像这样:

<!doctype html>
<html>

<head>
  <meta charset="utf-8">
  <title>My App</title>
  <base href="/">

  <link rel="stylesheet" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.7/css/bootstrap.min.css">
  <meta name="viewport" content="width=device-width, initial-scale=1">
  <link rel="icon" type="image/x-icon" href="favicon.ico">
</head>

<body>
  <app-root>Loading...</app-root>
</body>

当我现在运行节点server.js并浏览到http://localhost:8000/时,我可以看到“正在加载...”消息,但之后没有任何内容出现,并且控制台中也没有错误。

1 个答案:

答案 0 :(得分:0)

你真正应该做的是在某个文件夹(ng build --prod -o /somefolder)中使用角度cli创建一个prod版本(o用于输出),然后让节点静态服务该文件夹app.use(express.static...)。你可以添加一个路由只返回index.html页面,这样你的url就不会包含整个文件夹路径(例如:localhost / somefolder / index.html)(这条路径很难看)。

这是最好的方法,因为角度应用程序仍然是独立的,并且不会与nodejs逻辑混合在一起。