首页 > 解决方案 > 快速路由静态文件:加载模块脚本失败

问题描述

我以与往常一样的方式为我的 Angular 9 应用程序提供服务,这是我第一次遇到这个问题。

我不断收到以下错误:“加载模块脚本失败:服务器以非 JavaScript MIME 类型“text/html”响应。

我已经在网上搜索了答案,但似乎找不到任何可以解决的问题。我所做的一切似乎都遵循给出的建议。我想知道这是否是 Angular v9 的新问题?

我的 express app.js 位于我的 Angular 项目的另一个文件夹中。下面是我的文件夹结构:

应用程序.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 而不是另一个子文件夹。

我仍然收到此错误。任何人都可以帮忙吗?

标签: node.jsexpressangular9productiondirname

解决方案


您必须为此使用express.static()

app.use(express.static(path.join(__dirname, '../client/dist')))

这里的问题是你总是用index.html文件响应,如果文件包含一些<script>标签,那么浏览器会期望接收.js文件,但你的服务器会用文件响应,.html这就是你得到错误的原因。


推荐阅读