快速路由静态文件:无法加载模块脚本

时间:2020-07-08 09:17:10

标签: node.js express angular9 production dirname

我一直以自己的方式为Angular 9应用程序服务,这是我第一次遇到此问题。

我一直收到以下错误:“无法加载模块脚本:服务器以非JavaScript MIME类型“ text / html”进行了响应。

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

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

  • 客户端

    • dist
      • index.html
  • 中间层

    • 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,而不是另一个子文件夹。

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

2 个答案:

答案 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')))

感谢您的支持。