由于MIME类型而拒绝应用样式

时间:2018-07-11 05:36:16

标签: html css node.js reactjs webpack

我正在从npm在webpack-dev-server上运行的React应用程序上工作。运行服务器后,我注意到在浏览器控制台中收到以下消息:

“拒绝应用'http://localhost:8080/css/index.css'中的样式,因为它的MIME类型('text / html')不是受支持的样式表MIME类型,并且启用了严格的MIME检查。”

除了名为style.css的自定义css文件之外,我能够获取以下所有资源。当我直接从包含文件夹(而不在本地服务器上运行)运行应用程序时,style.css文件加载没有问题。

我需要在Webpack中使用CSS加载程序吗?

我已经查看了以下帖子,并尝试了所有建议,但无济于事:

Stylesheet not loaded because of MIME-type

在index.html中,我使用以下格式的链接标记:

  <link rel="stylesheet" type="text/css" href="css/style.css"

这是我的webpack.config.js文件:

const path = require('path');
const HTMLWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: './src/index.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js'
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: 'babel-loader'
            }
        ]
    },
    plugins: [
        new HTMLWebpackPlugin({
        template: './src/index.html', //source
        filename: 'index.html'  //destination
        })
    ]
}

这是我的项目目录结构:

  • src

    • 组件

    • css

      • style.css
    • index.html
    • index.js

任何帮助将不胜感激

1 个答案:

答案 0 :(得分:1)

所以事实证明,我需要利用 style-loader和css-loader 。我怀疑问题完全出在webpack-dev-server以及它如何引用样式表。我正在使用webpack 4,以防将来对任何人有帮助。

我的webpack.config.js现在看起来像这样:

const path = require('path');
const HTMLWebpackPlugin = require('html-webpack-plugin');

module.exports = {
    entry: './src/index.js',
    output: {
        path: path.resolve(__dirname, 'dist'),
        filename: 'bundle.js'
    },
    module: {
        rules: [
            {
                test: /\.js$/,
                exclude: /node_modules/,
                use: 'babel-loader'
            },
            {
                test: /\.css$/,
                use: ['style-loader', 'css-loader']
            }
        ]
    },
    plugins: [
         //will automatically inject bundle js into ./dist/index.html
         new HTMLWebpackPlugin({
             template: './src/index.html', //source
             filename: 'index.html'  //destination
         })
    ]
}