首页 > 解决方案 > 为什么我从运行指向 Angular 应用程序的 /dist 文件夹的节点服务器得到一个空白页面?

问题描述

我的简单节点服务器是:

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,因此没有任何路由。

在此处输入图像描述

标签: node.jsangularexpress

解决方案


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

这是因为您为服务器将收到的每个请求都设置了“index.html”文件的响应。第一个响应会很好,即 index.html 页面仅符合预期。但是,index.html 页面必须有一些脚本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')));

推荐阅读