Webpack с babel-загрузчиком для реакции повреждает файлы изображений

Я использую веб-пакет с babel-loader для преобразования файлов реакции.jsx. Однако добавление загрузчика файлов или загрузчика стилей и CSS не позволяет правильно обрабатывать требуемые изображения () в компонентах реакции или таблицах стилей.

Они распознаются веб-пакетом и копируются в папку dist. Путь к файлу изображения правильный, я это проверил в выводе css и js. Сервер также может отображать файлы, я проверил некоторые из них, скопированные вручную.

То, что происходит, - то, что сами изображения искажены. Ни просмотрщик изображений, ни браузер не могут отобразить изображение, в результате чего в браузере появляется невидимое изображение.

Что я пробовал до сих пор:

  • использование только babel-загрузчика, как предложено в: https://github.com/webpack/file-loader/issues/35, приводит к ошибке: нет обработчика для типа файла.
  • используя загрузчик файлов напрямую
  • используя image-webpack-loader (который, кажется, использует file-loader под капотом)
  • используя IsomorphicLoaderPlugin ( https://github.com/jchip/isomorphic-loader), который кажется более простой альтернативой webpack-isomorphic-tools
  • использование css background-images с помощью url() и ExtractTextPlugin('style-loader', 'css-loader')

Все вышеперечисленные шаги привели либо к ошибкам в веб-пакете, не найденным подходящим обработчиком, либо к поврежденным файлам изображений.

Вот моя текущая конфигурация веб-пакета для справки (я включил все на случай, если возникнут какие-либо проблемы / конфликты, которые я пропускаю):

var ExtractTextPlugin = require('extract-text-webpack-plugin'),
        webpack = require('webpack');
        IsomorphicLoaderPlugin = require("isomorphic-loader/lib/webpack-plugin");



module.exports = {

    context: __dirname + '/client',

    entry: ['babel-polyfill', './index.jsx'],

    output: {
        filename: 'app.js',
        path: __dirname + '/dist',
        publicPath: '/'
    },

    resolve: {
        ignore: /node_modules/,
        extensions: ['', '.js', '.jsx']
    },

    devtool: 'source-map',

    plugins: [
        new ExtractTextPlugin('styles.css'),

        new IsomorphicLoaderPlugin({ keepExistingConfig: false }),

        new webpack.DefinePlugin({
            "process.env": {
                BROWSER: JSON.stringify(true)
            }
        })
    ],

    module: {

        preLoaders: [
            {
                loaders: ['isomorphine']
            }
        ],

        loaders: [
            {
                test: /\.jsx?$/,
                loader: 'babel',
                exclude: /node_modules/,
                query: {
                    cacheDirectory: true,
                    plugins: ['transform-runtime', 'transform-decorators-legacy', 'transform-class-properties', 'transform-object-rest-spread'],
                    presets: ['react', 'es2015', 'stage-0']
                }
            },
            {
                test: /\.css$/,
                loader: ExtractTextPlugin.extract('style-loader', 'css-loader')
            },
            {
                test: /\.(jpe?g|png|gif|svg)$/i,
                loader: "file!isomorphic"
            }
        ]
    }
};

0 ответов

Другие вопросы по тегам