node.js - 快速路由静态文件:加载模块脚本失败
问题描述
我以与往常一样的方式为我的 Angular 9 应用程序提供服务,这是我第一次遇到这个问题。
我不断收到以下错误:“加载模块脚本失败:服务器以非 JavaScript MIME 类型“text/html”响应。
我已经在网上搜索了答案,但似乎找不到任何可以解决的问题。我所做的一切似乎都遵循给出的建议。我想知道这是否是 Angular v9 的新问题?
我的 express app.js 位于我的 Angular 项目的另一个文件夹中。下面是我的文件夹结构:
客户
- 距离
- 索引.html
- 距离
中层
- 应用程序.js
应用程序.js:
app.use(express.static(__dirname + '/dist'));
app.get('*/', (req, res) => {
const indexFile = path.join(__dirname, '../client/dist/index.html');
res.sendFile(indexFile);
})
文件路径是正确的,我已经控制台记录了它,所有这些都加起来了。我将 angular.json 中的输出路径也更改为 dist 而不是另一个子文件夹。
我仍然收到此错误。任何人都可以帮忙吗?
解决方案
您必须为此使用express.static()
:
app.use(express.static(path.join(__dirname, '../client/dist')))
这里的问题是你总是用index.html
文件响应,如果文件包含一些<script>
标签,那么浏览器会期望接收.js
文件,但你的服务器会用文件响应,.html
这就是你得到错误的原因。
推荐阅读
- javascript - 在 JavaScript 中优化堆栈内存读/写?
- gradle - Gradle 禁用特定任务的自动子项目执行
- python - Altair 滑块变换数据
- html - 在不使用图像的情况下调整背景颜色
- oracle - Oracle OCI jdbc 驱动程序陷阱 ORA-01403: 未找到数据
- python-3.x - Matplotlib 停止迭代异常
- python - Django过滤器按其他列查找最小数字组
- docker - docker load 设备 RHEL 上没有剩余空间
- facebook - Facebook - 卷曲错误 SSL_CACERT SSL 证书
- python - 分类成绩数据(A+、B-等)转换为数值