我一直以自己的方式为Angular 9应用程序服务,这是我第一次遇到此问题。
我一直收到以下错误:“无法加载模块脚本:服务器以非JavaScript MIME类型“ text / html”进行了响应。
我已经在网上搜寻了答案,似乎找不到任何解决方法。我所做的一切似乎都遵循给出的建议。我想知道Angular v9是否是新问题?
我的express app.js位于Angular项目的另一个文件夹中。下面是我的文件夹结构:
客户端
中间层
app.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,而不是另一个子文件夹。
我仍然收到此错误。有人可以帮忙吗?
答案 0 :(得分:1)
为此您必须使用express.static()
:
app.use(express.static(path.join(__dirname, '../client/dist')))
这里的问题是,您始终使用index.html
文件进行响应,如果该文件包含一些<script>
标签,则浏览器将期望收到一个.js
文件,但是您的服务器使用一个{ .html
文件,这就是您收到错误的原因。
答案 1 :(得分:0)
非常感谢sebastian-kaczmarek提出的解决方案。
有效答案如下:
app.use(express.static(path.join(__dirname, '../client/dist')))
感谢您的支持。