MIME类型('text / html')不是Chrome中的可执行错误

时间:2018-10-18 16:59:08

标签: javascript node.js webpack mime-types typechecking

我试图将我的webpack build.js文件添加到我的html页面中,并且在Chrome中不断出现这些错误:

GET http://localhost:3000/public/build.js net::ERR_ABORTED 404 (Not Found)
Refused to execute script from 'http://localhost:3000/public/build.js' because its MIME type ('text/html') is not executable, and strict MIME type checking is enabled.

app.js:

const express = require('express');
const app = express();

app.use(express.static('public'));

app.listen(3000, function() {
    console.log('poopy');
});

app.post('/', function(req, res) {
    res.end('success');
});

index.html:

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <title>Coffee Newsletter</title>
</head>
<body>
    <form action="/" method="post">
        <input type="email" name="email">
        <input type="submit" name="submit">
    </form>
    <script type="text/javascript" src="./public/build.js"></script>
</body>
</html>

Webpack配置:

const path = require('path')

module.exports = {
    entry: './scripts.js',
    output: {
        path: __dirname + '/public',
        filename: 'build.js'
    },
    watch: true

}

我尝试使用historyApiFallback: true,但没有解决任何问题。我读过很多关于人们解决HTML脚本标签错误的问题的信息,所以也许有些事情我没有看到。希望有人可以帮助我!预先感谢。

只是为了澄清这是我的文件所在的位置 主文件夹: C:\ Users \ jake \ Documents \ project \ CoffeeClub \ newsletter

  • 公共
  • app.js
  • scripts.js
  • webpack.config.js

在公共内部,我有以下文件:

  • build.js
  • index.html

2 个答案:

答案 0 :(得分:0)

您说:

app.use(express.static('public'));

因此,当浏览器要求提供/public/build.js时,服务器会为其提供./public/public/build.js。由于不存在,因此改成404。

一个来自URL的公共,另一个来自静态基本目录。

如果要在URL中包含/public,则必须限制中间件的路由。

app.use('/public', express.static('public'));

答案 1 :(得分:0)

发现问题出在服务器提取HTML的问题之后,我删除了多余的public目录,并将其全部放在根目录中,并且现在工作正常。