我以一贯的方式为Angular 9应用程序提供服务,这是我第一次遇到这个问题。
我不断地得到以下错误:;未能加载模块脚本:服务器以非JavaScript MIME类型"响应;text/html";。
我在网上搜寻答案,似乎找不到任何解决问题的方法。我所做的一切似乎都遵循了给出的建议。我想知道这是否是Angular v9的新问题?
我的express app.js位于Angular项目的另一个文件夹中。以下是我的文件夹结构:
-
客户端
- dist
- index.html
- dist
-
中间层
- app.js
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,而不是另一个子文件夹。
我仍然会犯这个错误。
您必须使用express.static()
:
app.use(express.static(path.join(__dirname, '../client/dist')))
这里的问题是,你总是用index.html
文件响应,如果文件包含一些<script>
标记,那么浏览器会期望收到.js
文件,但你的服务器用.html
文件响应,这就是为什么你会收到错误。