使用webpack 2.2.0时,CSS字体加载器出现错误。

3
我希望将webpack升级到v2.2.0。我在配置中进行了一些更改。之前在打包时没有任何错误,但现在我遇到了大量的错误,但我猜都是slick-carousel引起的。我找不到错误的原因。
这里附上截图。

enter image description here

enter image description here

这是我的webpack配置

const path = require('path');
const webpack = require('webpack');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ExtractTextPlugin = require('extract-text-webpack-plugin');

const VENDOR_LIBS = [
  'react', 'lodash', 'axios', 'base-64', 'leaflet', 'leaflet-routing-machine',
  'moment', 'react-bootstrap', 'react-dates', 'react-dom', 'react-geosuggest',
  'react-google-places-suggest', 'react-input-range', 'react-intl', 'react-leaflet',
  'react-masonry-component', 'react-redux', 'react-router', 'react-router-redux',
  'react-slick', 'redux', 'redux-form', 'redux-thunk', 'slick-carousel'
];

const config = {
  entry: {
    bundle: './src/index.js',
    vendor: VENDOR_LIBS,
  },
  output: {
    path: path.resolve(__dirname, 'dist'),
    filename: '[name].[chunkhash].js',
  },
  module: {
    rules: [
      {
        loader: ExtractTextPlugin.extract({
          loader: 'css-loader'
        }),
        test: /\.css$/,
      },
      {
        use: 'babel-loader',
        test: /\.js$/,
        exclude: /node_modules/,
      },
      {
        use: [
          {
            loader: 'url-loader',
            options: { limit: 40000 }
          },
          'image-webpack-loader'
        ],
        test: /\.(jpe?g|png|gif|svg)$/,
      },
      {
        test: /masonry|imagesloaded|fizzy\-ui\-utils|desandro\-|outlayer|get\-size|doc\-ready|eventie|eventemitter/, // eslint-disable-line
        loader: 'imports-loader?define=>false&this=>window'
    }
    ],
  },
  plugins: [
    new webpack.optimize.CommonsChunkPlugin({
      names: ['vendor', 'manifest']
    }),
    new HtmlWebpackPlugin({
      template: 'src/index.html'
    }),
    new webpack.DefinePlugin({
       'process.env.NODE_ENV': JSON.stringify(process.env.NODE_ENV)
    }),
    new ExtractTextPlugin('style.css'),
  ],
};

if (process.env.NODE_ENV === 'production') {
    config.plugins.push(
        new webpack.optimize.UglifyJsPlugin()
    );
}

module.exports = config;

package.json

"dependencies": {
    "axios": "^0.15.2",
    "base-64": "^0.1.0",
    "leaflet": "^1.0.2",
    "leaflet-routing-machine": "^3.2.4",
    "lodash": "^4.17.2",
    "moment": "^2.16.0",
    "react": "^15.4.0",
    "react-bootstrap": "^0.30.6",
    "react-dates": "^4.0.1",
    "react-dom": "^15.4.0",
    "react-geosuggest": "^2.0.0",
    "react-google-places-suggest": "^1.0.1",
    "react-input-range": "^0.9.3",
    "react-intl": "^2.1.5",
    "react-leaflet": "^1.0.1",
    "react-masonry-component": "^4.3.1",
    "react-redux": "^4.4.6",
    "react-router": "^3.0.0",
    "react-router-redux": "^4.0.7",
    "react-slick": "^0.14.5",
    "redux": "^3.6.0",
    "redux-form": "^6.2.0",
    "redux-thunk": "^2.1.0",
    "slick-carousel": "^1.6.0"
  },
  "devDependencies": {
    "babel-core": "^6.18.2",
    "babel-eslint": "^7.1.0",
    "babel-loader": "^6.2.7",
    "babel-plugin-react-intl": "^2.2.0",
    "babel-preset-es2015": "^6.18.0",
    "babel-preset-react": "^6.16.0",
    "babel-preset-stage-2": "^6.18.0",
    "css-loader": "^0.26.1",
    "eslint": "^3.10.2",
    "eslint-config-rallycoding": "^3.1.0",
    "file-loader": "^0.9.0",
    "imports-loader": "^0.6.5",
    "react-addons-shallow-compare": "^15.4.0",
    "extract-text-webpack-plugin": "2.0.0-beta.4",
    "html-webpack-plugin": "^2.26.0",
    "image-webpack-loader": "^3.1.0",
    "webpack": "2.2.0-rc.0",
    "webpack-dev-server": "2.2.0-rc.0",
    "react-hot-loader": "^3.0.0-beta.6",
    "style-loader": "^0.13.1",
    "url-loader": "^0.5.7"
  }

index.html

<html>
    <head>
        <meta charset="utf-8">
        <link rel="stylesheet" type="text/css" href="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/css/bootstrap.min.css">
        {# <link rel="stylesheet" type="text/css" href="./assets/css/main.css">#}
        <link href="https://fonts.googleapis.com/css?family=Montserrat" rel="stylesheet">
        <link rel="stylesheet" type="text/css" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/4.7.0/css/font-awesome.min.css">
        <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/leaflet/1.0.1/leaflet.css">
        <script src="http://maps.googleapis.com/maps/api/js?key=AIzaSyDclCH64TYf07E67k6dKHyrY573Yt35g9s&libraries=places"></script>
    </head>
    <body>
        <div class="app"></div>
        <script type="text/javascript" src="https://code.jquery.com/jquery-2.2.0.min.js"></script>
        <script src="https://maxcdn.bootstrapcdn.com/bootstrap/3.3.6/js/bootstrap.min.js" type="text/javascript"></script>
        {# <script src="./app.js"></script>#} htmlwebpack plugin will do it
    </body>
</html>

更新

为了使其正常工作,我不得不删除这些行。

// import 'slick-carousel/slick/slick.css';
// import 'slick-carousel/slick/slick-theme.css';
1个回答

2

只需在module中的配置中添加以下loader

{ test: /\.(png|woff|woff2|eot|ttf|svg)$/ ,
  loader: 'url-loader?limit=100000' 
}

哎呀我的错,我没有注意到。非常感谢你的帮助。 - Serenity

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接