node.js - 为什么我从运行指向 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,因此没有任何路由。
解决方案
使用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')));
推荐阅读
- reactjs - 在请求 API 之前更新一个值
- nuxt.js - Nuxt 使用来自中间件的道具重定向
- python - 朱莉娅初始化数组未知大小
- scala - 找不到类型 EnvT
- swift - 为什么静态属性不能在 Swift 中显式使用 self?
- r - 使用两个记录分隔符读取 ASCII、固定长度字段/记录
- python - 在 EXCEL(.xlsx) 中的数据框 python 00:00:00 中删除
- asp.net-core-webapi - 带有 Identity Server 4 自定义密码验证的 Net Core 3.1 API
- python - 有没有办法创建一个值映射到索引/行对的 Pandas 数据框?
- c# - ECDiffieHellmanCng 安全吗?