Webpack - 无法解析背景图像的路径

时间:2016-10-25 10:22:08

标签: reactjs webpack

我正在尝试使用react.js和redux开发一个Web应用程序,但我有一点问题。

我有以下Webpack配置:

const path = require('path');

var sassParams = [
    'includePaths[]=' + path.resolve(__dirname, './app/styles'),
    'includePaths[]=' + path.resolve(__dirname, '../node_modules')
];

module.exports = {
    devtool: 'inline-source-map',
    entry: {
        javascript: "./app/src/index.jsx",
        html: "./app/index.html",
    },
    output: {
        filename: 'bundle.js',
        path: path.resolve(__dirname, 'app')
    },
    resolve: {
        extensions: ['', '.js', '.jsx', '.json'],
        root: path.resolve(__dirname, './app/src'),
        alias: {
            images: path.resolve(__dirname, './app/images')
        }
    },
    devServer:{
        contentBase: 'app'
    },
    module: {
        loaders: [{
            test: /\.jsx?$/,
            exclude: /node_modules/,
            loaders: ["babel-loader"],
        }, {
            test: /\.html$/,
            loader: "file?name=[name].[ext]",
        }, {
            test: /\.jpe?g$|\.gif$|\.png$|\.svg$|\.woff$|\.ttf$|\.wav$|\.mp3$/,
            loader: 'url-loader?limit=10000&name=images/[name].[ext]'
        }, {
            test: /\.scss$/,
            loader: [
                'style-loader',
                'css-loader?sourceMap&modules&localIdentName=[name]__[local]___[hash:base64:5]',
                'resolve-url',
                'postcss-loader',
                'sass-loader?' + sassParams.join('&')
            ].join('!'),
        }],
        postcss() {
            return [autoprefixer, precss];
        },
    },
};

这是我的文件夹架构:

├── app
│   ├── images
│   │   └── image.png
│   ├── index.html
│   ├── src
│   │   ├── actions
│   │   ├── components
│   │   │   └── Button
│   │   │   │   ├── Button.jsx
│   │   │   │   └── Button.scss
│   │   ├── constants
│   │   ├── containers
│   │   ├── index.jsx
│   │   ├── middleware
│   │   ├── reducers
│   │   └── store
│   └── styles
│       ├── _base.scss
│       ├── _functions.scss
│       ├── _mixins.scss
│       ├── _toolkit.scss
│       ├── _variables.scss
│       └── app.scss
├── node_modules
├── package.json
└── webpack.config.js

Button.jsx:

return (
    <button className={style.btn} >
        { children }
    </button>
);

Button.scss:

.btn {
    background-image: url(/images/image.png);
}

我可以通过我的网络浏览器访问该图片:http://localhost:8080/images/image.png,但是,我不明白为什么我的CSS不...

有什么想法吗?

谢谢!

更新

检查员的风格:

.Button__btn___1lpoP {
    background-image: url(/images/image.png);
}

1 个答案:

答案 0 :(得分:1)

您需要提供的网址是相对于您的文件的,因此请将其更改为../../../images/image.png