12

我正在尝试使用Webpack对BootstrapFont-awesome做一个简单的要求。我设法加载了 Bootstrap CSS,但 Font-awesome 无法正常工作。

这是我得到的结果:

在此处输入图像描述

我的代码如下。我在这里做错了什么?

资源:此处提供Github 代码

包.json

{
  "name": "",
  "version": "0.0.1",
  "main": "index.js",
  "scripts": {
    "test": "echo \"Error: no test specified\" && exit 1",
    "start": "webpack -w"
  },
  "license": "MIT",
  "devDependencies": {
    "css-loader": "^0.21.0",
    "expose-loader": "^0.7.0",
    "file-loader": "^0.8.4",
    "style-loader": "^0.13.0",
    "url-loader": "^0.5.6",
    "webpack": "^1.12.2"
  },
  "dependencies": {
    "admin-lte": "^2.3.2",
    "bootstrap": "^3.3.5",
    "bootstrap-webpack": "0.0.5",
    "exports-loader": "^0.6.2",
    "extract-text-webpack-plugin": "^0.8.2",
    "font-awesome": "^4.4.0",
    "font-awesome-webpack": "0.0.4",
    "imports-loader": "^0.6.5",
    "jquery": "^2.1.4",
    "less": "^2.5.3",
    "less-loader": "^2.2.1"
  }
}

入口点:index.js

var $ = require('jquery');

require('expose?$!expose?jQuery!jquery');

require("bootstrap-webpack");
require('./node_modules/font-awesome/css/font-awesome.css');

require('./resources/css/style.css');


$('h1').html('<i class="fa fa-bars"></i> this is bootstrap');
console.log('hi there');

Webpack 配置文件webpack.config.js

module.exports = {

    entry: './index.js',
    output: {
        path: 'public/assets/',
        filename: 'bundle.js'
    },
    devtool: 'source-map',
    module: {
        loaders: [

            {test: /\.css$/, loader: "style!css!" },
            { test: /\.less$/, loader: "style!css!less!" },

            //bootstrap
            {test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/font-woff'},
            {test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=application/octet-stream'},
            {test: /\.eot(\?v=\d+\.\d+\.\d+)?$/, loader: 'file'},
            {test: /\.svg(\?v=\d+\.\d+\.\d+)?$/, loader: 'url?limit=10000&mimetype=image/svg+xml'},

            //font-awesome
            { test: /\.woff(2)?(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "url-loader?limit=10000&minetype=application/font-woff" },
            { test: /\.(ttf|eot|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "file-loader" }



        ]
    },

} 
4

2 回答 2

7

检查您的 F12 调试控制台并查看有关给定文件错误的 Web 浏览器详细信息。

您的 Web 服务器未提供具有正确 mime 类型的 .woff 和 .woff2 文件,因此从浏览器客户端的角度来看,它们根本没有加载。

您需要修改 Web 服务器端以添加对 .woff 文件的支持,例如在 Web.config 中的 IIS Express 上,您应该具有:

  <system.webServer>
    <staticContent>
      <mimeMap fileExtension="woff" mimeType="application/font-woff" />
      <mimeMap fileExtension="woff2" mimeType="application/font-woff" />
    </staticContent>
  </system.webServer>

在 webpack.config.js 里面你应该有像这样的模块加载器

    {
        test: /\.woff($|\?)|\.woff2($|\?)|\.ttf($|\?)|\.eot($|\?)|\.svg($|\?)/,
        loader: 'url-loader'
    }
于 2016-08-02T21:32:18.290 回答
2

我知道这是 1 年前的问题,但以防万一有人最终从谷歌得到这个:

css-loader 生成错误文件路径存在一个已知问题。这在生产构建中不会发生,但在开发模式下渲染方块时仍然很烦人。

在修复此问题之前,您可以禁用 css-loader 源映射以查看在开发中正确呈现的字体。在您的 webpack 配置中找到写入css?sourceMap并将其更改为css.

于 2017-01-14T15:53:28.530 回答