【问题标题】:Can't load font-awesome with Webpack [duplicate]无法使用 Webpack 加载字体真棒[重复]
【发布时间】:2016-11-23 18:35:37
【问题描述】:

尝试使用 webpack 加载 font-awesome 时出现此错误:

ERROR in ./~/font-awesome/fonts/fontawesome-webfont.eot?v=4.6.3
Module parse failed: ...\node_modules\font-awesome\fonts\fontawesome-webfont.eot?v=4.6.3 Unexpected character '�' (1:0)
You may need an appropriate loader to handle this file type.

我正在尝试在这样的 React 组件中导入 font-awesome:

import "font-awesome/scss/font-awesome.scss";

这是我的 webpack.config.js 的样子。我想将 font-awesome 和相关资产与其他所有内容分开加载,即因为我已经使用 babel 加载 SVG,但不想使用 font-awesome。

{
    test: /\.scss/,
    loader: ExtractPlugin.extract("style", "css!sass")
},
{
    test: /\.svg$/,
    loader: "babel!svg-react",
    exclude: /node_modules/
},
{
    test: /\.ttf$/,
    loader: "file-loader?mimetype=application/octet-stream&name=[name].[ext]",
    exclude: /node_modules/
},
{
    test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
    loader: "url?limit=10000&mimetype=application/font-woff&name=[name].[ext]",
    exclude: /node_modules/
},
{
    test: /\.(otf|eot|png|svg|ttf|woff|woff2)(\?[\s\S]+)?$/,
    loader: "url?limit=10000",
    include: "node_modules/font-awesome/fonts"
}

我也尝试过这样的正则表达式,但没有成功:

{ test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url?limit=10000" }

【问题讨论】:

    标签: reactjs webpack font-awesome


    【解决方案1】:

    要正确加载 font-awesome 字体,您需要在 webpack.config.js 中配置加载器以使用 url-loader 和 file-loader。示例:

    module.exports = {
      module: {
        loaders: [
          // the url-loader uses DataUrls. 
          // the file-loader emits files. 
          { 
            test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, 
            loader: "url-loader?limit=10000&mimetype=application/font-woff" 
          },
          { 
            test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, 
            loader: "file-loader" 
          },
        ]
      }
    };
    

    为此,您需要 npm install font-awesome-sass-loader npm i font-awesome-sass-loader 您还需要 url-loader npm i url-loader 和文件加载器npm i file-loader

    【讨论】:

      【解决方案2】:

      在尝试了许多示例后,这对我有用:

        { test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader" },
        { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader" },
      

      并且确定 fontawsome 需要在你的主文件中导入

        import 'font-awesome/css/font-awesome.css';
      

      别忘了安装加载器

        npm install url-loader --save-dev
      

      【讨论】:

      • 你不能用(ttf|eot|svg|woff2?)一行来做吗?
      【解决方案3】:

      尝试使用file-loader 而不是url-loader 加载您的.eot 文件。

      示例

      module: {
          loaders: [
              {
                  test: /\.(eot|ttf|woff2?|otf|svg|png|jpg)$/,
                  loaders: ['file']
              }
          ]
      }
      

      【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2017-05-27
      • 2017-09-02
      • 2016-11-03
      • 2014-09-07
      • 2018-08-22
      • 2013-10-16
      • 2023-04-01
      相关资源
      最近更新 更多