Почему webpack scss не хочет включать шрифты?

у меня есть простой scss файл

$fa-font-path: "~font-awesome/fonts";
$bootstrap-sass-asset-helper: false !default;
$icon-font-path: "~bootstrap-sass/assets/fonts/bootstrap/";
$icon-font-name: "glyphicons-halflings-regular" !default;
$icon-font-svg-id: "glyphicons_halflingsregular" !default;
@import "~bootstrap-sass/assets/stylesheets/bootstrap";
@import '~font-awesome/scss/font-awesome';

*, *:before, *:after {
  box-sizing: border-box;
}

html {
  position: relative;
  min-height: 100%;
}

body {
  background-color: $bg;
  margin-bottom: 60px;
}

А мой загрузчик веб-пакетов выглядит так:

  {
    test: /\.(woff|woff2)(\?v=\d+\.\d+\.\d+)?$/,
    use: {
      loader: 'url-loader',
      options: {
        limit: 10000,
        mimetype: 'application/font-woff'
      }
    }
  },
  {
    test: /\.(ttf|eot|svg)(\?v=\d+\.\d+\.\d+)?$/,
    use: 'file-loader'
  },
  {
    test: /\.scss$/,
    include: [
      path.resolve(process.cwd(), "src/client/assets/styles"),
    ],
    use: ExtractTextPlugin.extract({
      fallback: "style-loader",
      use: [
        {
          loader: "css-loader",
          options: {
            sourceMap: true,
            modules: true,
            importLoaders: 1,
            localIdentName: '[local]_[hash:base64:3]'
          }
        },
        {
          loader: "postcss-loader",
          options: postcssLoaderOptions
        },
        {
          loader: "sass-loader",
          options: {
            sourceMap: true,
            outputStyle: "compressed"
          }
        }
      ]
    })
  },

Но я получаю ошибки при попытке включить мой scss файл

Module build failed: ModuleNotFoundError: Module not found: Error: Can't resolve '~font-awesome/fonts/fontawesome-webfont.eot?v=4.7.0'

Изменение значения для modules: true, помогает, но я хотел бы оставить его на true

ОШИБКА в ./node_modules/css-loader?{"sourceMap":true,"modules":true,"importLoaders":1,"localIdentName":"[local provided_[hash:base64:3] provided"}!./ node_modules / postcss-loader / lib? {"плагины": [null], "sourceMap": true}! ./ node_modules / sass-loader / lib / loader.js? {"sourceMap": true, "outputStyle": " сжатый "}! ./ src / client / assets / styles / styles.scss Модуль не найден: Ошибка: не удается разрешить '~ font-awesome / fonts / fontawesome-webfont.eot? v = 4.7.0' in '/ Users / vardius / Projects / webpack / src / client / assets / styles '@ ./node_modules/css-loader? {"SourceMap": true, "modules": true, "importLoaders": 1, "localIdentName": "[ local] _ [hash: base64: 3] "}! ./ node_modules / postcss-loader / lib? {" плагины ": [null]," sourceMap ": true}! ./ node_modules / sass-loader / lib / loader .js? {"sourceMap": true, "outputStyle": "сжатый"}! ./ src / client / assets / styles / styles.scss 7: 134621-134683


person vardius    schedule 12.08.2017    source источник


Ответы (1)


У меня была такая же проблема, и я нашел решение этой ошибки.

Сначала я удалил номера версий после файлов шрифтов в _path.scss в папке font-awesome scss.

    src: url('#{$fa-font-path}/fontawesome-webfont.eot');
    src: url('#{$fa-font-path}/fontawesome-webfont.eot') format('embedded-opentype'),
    url('#{$fa-font-path}/fontawesome-webfont.woff2') format('woff2'),
    url('#{$fa-font-path}/fontawesome-webfont.woff') format('woff'),
    url('#{$fa-font-path}/fontawesome-webfont.ttf') format('truetype'),
    url('#{$fa-font-path}/fontawesome-webfont.svg#fontawesomeregular') format('svg');

Затем я добавил полный путь к папке в $fa-font-path переменной

$fa-font-path : "./assets/vendor/font-awesome/fonts" !default;

Надеюсь, это решит ваши ошибки.

person Martian.titan    schedule 28.08.2017
comment
не нужно удалять номера версий, просто установите переменную $fa-font-path, которая должна это сделать - person lulliezy; 24.05.2018