为什么我从运行指向Angular应用程序的/ dist文件夹的节点服务器时得到空白页?

时间:2018-07-21 16:04:20

标签: node.js angular express

我的简单节点服务器是:

const express = require('express');
const app = express();

app.get('*', (req, res) => {
  res.sendFile(__dirname + '/dist/page/index.html');
})

app.listen(3335, () => { console.log('Server is listening on 3335'); });

但是我得到的索引文件似乎没有运行main.js Angular应用程序,目前它实际上是一个页面/组件,即app.component.ts,因此没有任何路由。

enter image description here

1 个答案:

答案 0 :(得分:2)

  

使用 express.static()提供静态文件。

这是因为您为服务器将收到的每个请求都设置了“ index.html”文件的响应。第一个响应会很好,那就是只有预期的那样才是index.html页面。但是,index.html页面必须具有一些 script css 标记,才能获取您假定在同一节点服务器上的Angular Javascript代码。因此,当浏览器遇到如下一行时:

<script src="/angularApp.js"></script>
在解析index.html文件中的

..时,它将向节点服务器发出另一个http://localhost:<port>/angularApp.js的请求,但由于已设置,因此将获得index.html文件作为响应。

执行此操作可为.html,.css,.js或您拥有的文件提供静态文件。

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