@uzi_no_uzi

Почему webpack выдает ошибку с путями?

Webpack выдает такого вида ошибку:
5cc7467eae6fe599583203.png
Вот сам конфиг:
const path = require('path');
const MiniCssExtractPlugin = require("mini-css-extract-plugin");
const CopyPlugin = require('copy-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');


const PATHS = {
	src: path.join(__dirname, './src'),
	dist: path.join(__dirname, './dist'),
	js: 'js/bundle.js',
	css: 'css/style.css',
}

module.exports = {
	externals: {
		paths: PATHS,
	},
	entry: {
		app: PATHS.src,
	},
	output: {
		path: PATHS.dist,
		filename: PATHS.js,
		publicPath: '/',
	},
	module: {
		rules: [
		{
			test: /\.js$/,
			loader: 'babel-loader',
			exclude: '/node_modules/',
		}, 
		{
      test: /\.(jpe?g|png|gif|svg)$/,
      use: [
        {
          loader: 'file-loader',
          options: {
						name: "[path][name].[ext]",
          }
        },
        {
          loader: 'image-webpack-loader',
          options: {
            mozjpeg: {
              progressive: true,
              quality: 65
            },
            optipng: {
              enabled: false,
            },
            pngquant: {
              quality: '65-90',
              speed: 4
            },
            gifsicle: {
              interlaced: false,
            },
            svgo: {
              enabled: false,
            }
          }
        }
      ]
    },
		{
			test: /\.less$/,
      use: [
        {
        	loader: 'style-loader',
        },
        {
        	loader: MiniCssExtractPlugin.loader,
        }, 
        {
        	loader: "css-loader",
        	options: {
        		sourceMap: true,
        	}
        },
        {
        	loader: "postcss-loader",
        	options: {
        		sourceMap: true,
        		config:  {
        			path: 'postcss.config.js',
        		}
        	}
        },
        {
        	loader: "less-loader",
        	options: {
        		sourceMap: true,
        	}
        }
      ]
		},
		{
			test: /\.css$/,
			use: [
				{
        	loader: 'style-loader',
        },
        {
        	loader: MiniCssExtractPlugin.loader,
        }, 
        {
        	loader: "css-loader",
        	options: {
        		sourceMap: true,
        	}
        },
        {
        	loader: "postcss-loader",
        	options: {
        		sourceMap: true,
        		config:  {
        			path: 'postcss.config.js',
        		}
        	}
        },
			]
		}]
	},
  	plugins: [
  	  new MiniCssExtractPlugin({
  	    filename: PATHS.css,
  	  }),
  	  new HtmlWebpackPlugin({
  	  	hash: false,
  	  	template: `${PATHS.src}/index.html`,
  	  	filename: 'index.html',
  	  }),
  	  new CopyPlugin([
  	  	{
      	  from: 'src/fonts',
      	  to: 'fonts',
      	},
      ]),
  	],
}

Вот таким образом прописываю пути:
@font-face {
    font-family: 'Druk';
    src: url('/../fonts/Druk-Medium.eot');
    src: url('/../fonts/Druk-Medium.eot?#iefix') format('embedded-opentype'),
        url('/../fonts/Druk-Medium.woff2') format('woff2'),
        url('/../fonts/Druk-Medium.woff') format('woff'),
        url('/../fonts/Druk-Medium.ttf') format('truetype'),
        url('/../fonts/Druk-Medium.svg#Druk-Medium') format('svg');
    font-weight: 500;
    font-style: normal;
}


Этот код находится в less файле и обрабатывается webpack'ом.

Почему прописывал путь таким образом? Потому что подобная ошибка уже возникала ранее, когда я пытался поставить картинку на фон таким образом:

background: url(../img/img.jpg);

Мне посоветовали сделать так:

background: url(/img/img.jpg);

И это сработало каким-то чудом.

Если с шрифтами проделать такую же фишку, то webpack не выкидывает ошибку, но путь к шрифтам указан не верно, это можно увидеть если посмотреть в css код после обработки:

5cc746d8577ab765905722.png

Перед слешем должны стоять две точки ..

Так как структура проекта такова:

5cc746f5ccd4d688567088.png

То есть все шрифты лежат в папке fonts, а css код, откуда идет обращение к этим шрифтам, лежит в папке css.

Как можно решить проблему?
  • Вопрос задан
  • 571 просмотр
Пригласить эксперта
Ответы на вопрос 1
lamer350
@lamer350
กำลังสูงสุด
Никакой проблемы по сути нет, просто получился корневой относительный путь, когда выгрузите сайт на сервер - все будет работать.
С точками путь относительно файла css рассчитывается и ошибка у вас скорее всего потому что less в папке внутри css и вебпак при компиляции проверяет пути относительно вашего less файла, а не будущего css.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы