【问题标题】:Webpack 2 background image relative path not workingWebpack 2背景图像相对路径不起作用
【发布时间】:2017-06-11 05:19:18
【问题描述】:

当我使用相对路径在我的反应组件中指定图像时,它加载得很好

组件:

import myImg from '../img/myImg.jpg';
...
<img className="myImg" src={myImg} alt="amazing image" />

这很好用。在检查时它给出的路径为http://localhost:8080/src/img/myImg.jpg

但是,如果我尝试将图像用作背景图像,则路径不正确,我得到 404

CSS:

#mainContainer {
    background-image: url('../img/myImg.jpg');
    background-size: cover;
    background-position: center;
}

这导致路径为http://localhost:8080/css/src/img/myImg.jpg,这是不正确的。如果我使用绝对网址,它可以工作background-image: url('http://localhost:8080/src/img/challenge.jpg');

Webpack 配置:

...
        {
            test: /\.less$/,
            include: [
                path.resolve(__dirname, 'src/less')
            ],
            use: ExtractTextPlugin.extract({
                fallback: 'style-loader',
                use: [
                    {
                        loader: 'css-loader',
                        options: { importLoaders: 1 }
                    },
                    'less-loader'
                ]
            })
        },
        {
            test: /\.(jpe?g|png|gif|svg)$/i,
            include: [
                path.resolve(__dirname, 'src/img')
            ],
            use: 'file-loader?name=[path][name].[ext]'
        }
    ]
},
plugins: [  // https://webpack.js.org/configuration/plugins/
    new ExtractTextPlugin('css/' + pkg.name + '.' + pkg.version + '.css'),
    new HtmlWebpackPlugin({ template: path.join(__dirname, 'src/template.js')})//,
]
...

如何在 css 中使用相对路径?

【问题讨论】:

    标签: javascript css webpack less webpack-2


    【解决方案1】:

    看起来您只需要在您的 css 的相对路径中添加一个“../”。

    #mainContainer {
        background-image: url('../../img/challenge.jpg');
        background-size: cover;
        background-position: center;
    }
    

    【讨论】:

    • 是的,我认为这可能是问题所在,但是当我更改它时,我得到:模块构建失败:ModuleNotFoundError: Module not found: Error: Can't resolve '../../img /myImg.jpg' in '/Users/chaselester/code/git/blife/src/less'
    • 在 'localhost:8080/css/src/im .....' 中的 'src' 来自哪里有点令人困惑,因为它不在你的风格中。也许试试 ../src/img/challange.jpg?
    • 不行。当我做背景图片时,我对它试图解析的路径有点困惑: ...css/src/img... 但是当使用 标记时,解析的路径是 .../src /img/... 之前没有添加js就像之前添加了css
    • 看起来它与您的配置中的 test: /\.(jpe?g|png|gif|svg)$/i, include: [ path.resolve(__dirname, 'src/img') ], use: 'file-loader?name=[path][name].[ext]' 有关。
    猜你喜欢
    • 2018-08-20
    • 2012-11-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-16
    • 1970-01-01
    • 2020-05-15
    相关资源
    最近更新 更多