webpack - webpack 给我错误“@font-face { ^ 意外令牌”
问题描述
并且 css 写得对,但是 webpack 在上面的照片中给了我错误“@font-face { ^ 意外令牌”在这里我的 webpack.config
const path = require('path')
const webpack = require('webpack')
const HtmlWebPackPlugin = require("html-webpack-plugin")
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const WorkboxPlugin = require('workbox-webpack-plugin')
const IconFontPlugin = require('icon-font-loader').Plugin;
const font=require('font-awesome/css/font-awesome.css')
module.exports = {
entry: "./src/js/index.js",
mode: 'production',
output: {
libraryTarget: 'var',
library: 'Client'
},
module: {
rules: [
{
test: '/\.js$/',
exclude: /node_modules/,
loader: "babel-loader"
},
{
test: /\.css$/,
use: ['style-loader', 'css-loader'],
},
{
test: /\.scss$/,
use: [ MiniCssExtractPlugin.loader, 'css-loader', 'sass-loader','icon-font-loader' ]
},
{
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
loader: "url?limit=10000&mimetype=application/font-woff"
}, {
test: /\.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"
},
{test: /\.(png|jpe?g|gif)$/i,
use: [
{
loader: 'file-loader',
options: {
name: '[sha512:hash:base64:7].[ext]',
}
}
],
}
],
},
plugins: [
new HtmlWebPackPlugin({
template: "./src/index.html",
filename: "./index.html",
}),
new MiniCssExtractPlugin({filename: '[name].css'}),
new WorkboxPlugin.GenerateSW(),
new IconFontPlugin()
]
}
这是css,第一行是给出问题的行,但是vs代码编辑器在这里没有说明语法错误:
@font-face {
font-family: 'FontAwesome';
src: url('../fonts/fontawesome-webfont.eot?v=4.7.0');
src: url('../fonts/fontawesome-webfont.eot?#iefix&v=4.7.0') format('embedded-opentype'), url('../fonts/fontawesome-webfont.woff2?v=4.7.0') format('woff2'), url('../fonts/fontawesome-webfont.woff?v=4.7.0') format('woff'), url('../fonts/fontawesome-webfont.ttf?v=4.7.0') format('truetype'), url('../fonts/fontawesome-webfont.svg?v=4.7.0#fontawesomeregular') format('svg');
font-weight: normal;
font-style: normal;
}
.fa {
display: inline-block;
font: normal normal normal 14px/1 FontAwesome;
font-size: inherit;
text-rendering: auto;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
解决方案
您的 webpack 配置中没有任何.css
文件规则,只有.scss
文件;为您使用的库中的 CSS 添加单独的 css 规则,或者在.css
旁边添加.scss
以让它处理两者;
编辑:实际上你webpack-prod.js
是致命的变形。多个错误;
- 您用于字体的加载器应该被重写
- 删除文件顶部未使用的导入(非 js 导入将导致执行)
- 您在部分中混合了插件和加载
rule
器 - 老实说,我正在尝试修复,但是一个接一个地出现了太多错误,这令人沮丧:(
无论如何,这里有一些更合适的配置来继续你的调试之旅(不再有@font-face 错误:)
const HtmlWebPackPlugin = require("html-webpack-plugin")
const MiniCssExtractPlugin = require('mini-css-extract-plugin')
const WorkboxPlugin = require('workbox-webpack-plugin')
const IconFontPlugin = require('icon-font-loader');
module.exports = {
entry: "./src/js/index.js",
mode: "production",
output: {
libraryTarget: "var",
library: "Client"
},
module: {
rules: [
{
test: "/.js$/",
exclude: /node_modules/,
loader: "babel-loader"
},
{
test: /\.css$/i,
use: ["style-loader", "css-loader", "node-sass"]
},
{
test: /\.scss$/,
use: ["style-loader", "css-loader", "sass-loader"]
},
{
test: /\.woff(\?v=\d+\.\d+\.\d+)?$/,
loader: "file-loader"
},
{
test: /\.woff2(\?v=\d+\.\d+\.\d+)?$/,
loader: "file-loader"
},
{
test: /\.ttf(\?v=\d+\.\d+\.\d+)?$/,
loader: "file-loader"
},
{
test: /\.eot(\?v=\d+\.\d+\.\d+)?$/,
loader: "file-loader"
},
{
test: /\.svg(\?v=\d+\.\d+\.\d+)?$/,
loader: "file-loader"
},
{
test: /\.(png|jpe?g|gif)$/i,
use: [
{
loader: "file-loader",
options: {
name: "[sha512:hash:base64:7].[ext]"
}
}
]
}
]
},
plugins: [
new HtmlWebPackPlugin({
template: "./src/index.html",
filename: "./index.html"
}),
new MiniCssExtractPlugin({ filename: "[name].css" }),
new WorkboxPlugin.GenerateSW(),
new IconFontPlugin()
]
};
推荐阅读
- spring-kafka - 使用 spring-kafka 作为配置框架
- python - 如何使用来自不同国家/地区的各种格式的正则表达式在 Python 中提取电话号码(仅限数字)?
- windows-subsystem-for-linux - 在 WSL 中找不到以前下载的文件
- r - 将专有的持续时间格式转换为毫秒
- css - 日文从上到下内容的 CSS3 {text-align: start}
- java - 在哪里放置泛型类型
- javascript - 重建对象数组后重新索引对象数组中的元素
- azure-devops - Azure Devops Pipeline - 使用 Microsoft Visual Studio 安装程序项目
- python - 为每个游戏列出正确的获胜者 Python
- python - 如何使用 lxml 从 xpath 获取所有文本