我的简单节点服务器是:
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,因此没有任何路由。
答案 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')));