【问题标题】:Cannot load css file in webpack 4无法在 webpack 4 中加载 css 文件
【发布时间】:2018-06-30 21:31:02
【问题描述】:

给定以下 webpack 4 配置:

const path = require('path')
const webpack = require('webpack')
const MiniCssExtractPlugin = require("mini-css-extract-plugin")
const devMode = process.env.NODE_ENV !== 'production'
const devFlagPlugin = new webpack.DefinePlugin({
  __DEV__: JSON.stringify(JSON.parse(process.env.DEBUG || 'false'))
})

module.exports = {
    mode: "development",
    entry: [
        'webpack-dev-server/client?http://0.0.0.0:3000',
        'webpack/hot/only-dev-server',
        "./app/app.js"
    ],
    output: {
        path: path.join(__dirname, "build"),
        filename: "bundle.js"
    },
    devtool: 'eval-source-map',
    resolve: {
        extensions: ['.js', '.jsx']
    },
    module: {
        rules: [
            { 
                test: /\.jsx|\.js?$/, 
                loader: 'babel-loader',
                options: {
                    plugins: [
                        'react-hot-loader/babel'
                    ]
                },
                exclude: /node_modules/},
            {
                test: /\.jsx|\.js$/,
                exclude: /node_modules/,
                use: [
                'babel-loader?' + JSON.stringify({presets: ['env', 'react']}),
                {
                    loader: 'eslint-loader'
                }]
            },
            {
                test: /\.css$/,
                include: /stylesheets|node_modules/,
                use: [ MiniCssExtractPlugin.loader, 'css-loader' ]
            },
            {
                test: /\.scss$/,
                include: /stylesheets/,
                use: [ MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader' ]
            },
            {
                test: /\.(jpg|png|gif|eot|woff|ttf|svg)/,
                loader: "file"
            }
        ]
    },
    devServer: {
        contentBase: "./build",
    },
    plugins: [
        new MiniCssExtractPlugin({
            filename: "[name].css",
            chunkFilename: "[id].css"
        }),
        devFlagPlugin,
        new webpack.NoEmitOnErrorsPlugin()
    ]

};

我正在尝试从 app.js 中的 /stylesheets/app.css 加载一个 css 文件:

require('./stylesheets/app.css')
let routes = (
    <div className="app">
        <Router>
            <div>hello</div>
        </Router>
    </div>
)

render(routes, document.getElementById('root'))

app.css文件定义为:

html {
    font-family: "Open Sans",Arial,sans-serif;
    font-size: 20px;
    height: 100%;
}

但是当我启动程序时:

webpack-dev-server --host 0.0.0.0 --port 3000 --hot --progress --colors

内容没有与之关联的样式。

我是否遗漏了 webpack 配置中的任何内容?

【问题讨论】:

    标签: css webpack css-loader webpack-4


    【解决方案1】:

    如果其他人遇到同样的问题,这里是 css/scss 加载器的正确配置:

    {
        test: /\.css$/,
        include: /stylesheets|node_modules/,
        use: ["style-loader", "css-loader"]
    },
    {
        test: /\.scss$/,
        include: /stylesheets/,
        use: [ 'style-loader', 'css-loader', 'sass-loader' ]
    }
    

    未使用 MiniCssExtractPlugin.loader;它仅用作插件。

    【讨论】:

    • 实际上,如果您想从 bundle 中移除 css 并将它们放入单独的文件中,则需要 MiniCssExtractPlugin.loader,这仅适用于生产。
    • @MatheusSilva 我明白了。你会建议什么是正确的答案?如果您发布详细的答案,我将很乐意接受。我的配置用于开发,但非常感谢有关在生产中设置它的详细信息。
    • 当然,我会重构这个并把一些东西放在一起
    猜你喜欢
    • 2018-12-21
    • 1970-01-01
    • 2017-07-10
    • 2019-05-23
    • 2019-07-18
    • 2018-12-19
    • 2018-05-21
    • 1970-01-01
    • 2023-03-14
    相关资源
    最近更新 更多