Webpack 无法加载字体(ttf)

2024-01-08

目前我有 3 种字体想要添加到我的 React 项目中:一个,一个光,一个大胆.
我的文件结构:

/src
├── /fonts/
│   ├── /A.ttf
│   ├── /A-light.ttf
│   └── /A-bold.ttf
│  
├── /styles/
│   ├── /base/
│   │   └── /__base.scss
│   └── styles.scss
│ 
├── app.jsx
└── webpack.config.js

_base.scss:

@font-face {
  font-family: "A";
  font-style: normal;
  font-weight: 400;
  src: url("../../fonts/A.ttf") format("truetype");
}

@font-face {
  font-family: "A";
  font-style: normal;
  font-weight: 800;
  src: url("../../fonts/A-bold.ttf") format("truetype");
}
@font-face {
  font-family: "A";
  font-style: normal;
  font-weight: 300;
  src: url("../../fonts/A-light.ttf") format("truetype");
}
body {
  font-family: A, Helvetica, Arial, sans-serif;
}

_base.scss 由 styles.scss 导入,styles.scss 在 app.jsx 中导入。

我的 webpack 配置如下所示:
webpack.config.js

const path = require('path');
const webpack = require('webpack');
const ExtractTextPlugin = require('extract-text-webpack-plugin');
const StyleLintPlugin = require('stylelint-webpack-plugin');

process.env.NODE_ENV = process.env.NODE_ENV || 'development';
console.log(process.env.NODE_ENV);
if (process.env.NODE_ENV === 'development') {
  require('dotenv').config({path: '.env.development'});
}

module.exports = env => {
  const isProduction = env === 'production';
  const CSSExtract = new ExtractTextPlugin('styles.css');

  return {
    entry: ['babel-polyfill', './src/app.jsx'],
    output: {
      path: path.join(__dirname, 'public', 'dist'),
      filename: 'bundle.js'
    },
    resolve: {
      extensions: ['.js', '.jsx', '.json', '.css', '.scss']
    },
    module: {
      rules: [
        {
          exclude: /(node_modules|bower_components)/,
          test: /\.jsx?$/,
          use: ['babel-loader', 'eslint-loader']
        },
        {
          test: /\.s?css$/,
          use: CSSExtract.extract({
            use: [
              {
                loader: 'css-loader',
                options: {
                  sourceMap: true
                }
              },
              {
                loader: 'sass-loader',
                options: {
                  sourceMap: true
                }
              }
            ]
          })
        },
        {
          test: /\.(png|jpg|svg)$/,
          use: {
            loader: 'url-loader'
          }
        },
        {
          test: /\.(ttf|eot|woff|woff2)$/,
          loader: 'file-loader',
          options: {
            name: 'fonts/[name].[ext]'
          }
        }
      ]
    },
    plugins: [
      CSSExtract,
      new webpack.DefinePlugin({
        'process.env.API_AUTH_TOKEN': JSON.stringify(process.env.API_AUTH_TOKEN),
        'process.env.API_EMAIL': JSON.stringify(process.env.API_EMAIL),
        'process.env.API_PASSWORD': JSON.stringify(process.env.API_PASSWORD)
      }),
      new StyleLintPlugin({})
    ],
    devtool: isProduction ? 'source-map' : 'inline-source-map',
    devServer: {
      overlay: {
        warnings: true,
        errors: true
      },
      contentBase: path.join(__dirname, 'public'),
      historyApiFallback: true,
      publicPath: '/dist/'
    }
  };
};

但是 Webpack 无法编译。

Error:

./src/styles/styles.scss 模块构建失败:ModuleNotFoundError:找不到模块:错误:无法解析“../../fonts/A.ttf”

任何帮助将不胜感激!


使用 npm 中的“ttf-loader”对我来说非常有效。

https://www.npmjs.com/package/ttf-loader https://www.npmjs.com/package/ttf-loader

module: {
  rules: [
    {
      test: /\.ttf$/,
      use: [
        {
          loader: 'ttf-loader',
          options: {
            name: './font/[hash].[ext]',
          },
        },
      ]
    }
  ]
}
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Webpack 无法加载字体(ttf) 的相关文章

随机推荐

  • 使用反射更新列表中的值

    我有一个具有 100 多个属性的对象 然后我有一个包含很多这些对象的列表 我需要计算列表中所有属性的最小值 最大值 中值和中值 所以不要写 Ag valuesForExtraCalculations Min c gt c Ag Al val
  • 类型错误:无法读取未定义的属性(读取“向下”)

    我创建了一个标题菜单 它在 Material UI V4 中仍然有效 但我最近更新到了 Material UI V5 但我有这样的错误 TypeError Cannot readproperties of undefined reading
  • 检测“输入”事件中的退格键和删除键?

    怎么做 I tried var key event which event keyCode event charCode if key 8 alert backspace 但它不起作用 如果我对按键事件执行相同的操作 它会起作用 但我不想使
  • 无法进入 dll(pdb 可用)

    我有一个包含许多项目的解决方案 其中一些位于解决方案路径之外 我使用 xcopy 将编译后的 dll 和 pdb 复制为构建后事件 如果我想进入 dll 它们位于我的解决方案之外 当前不会命中断点 尚未加载任何符号 对于本文档 所有文件 d
  • 应用程序启动器图标错误

    清单定义了我想要的应用程序图标 但是当我部署应用程序时 应用程序图标是一个完全不同的图标 可能发生了什么 在我的任何项目文件中都找不到显示为图标的图像 我根本没有移动我的 ic launcher 图像 因此它们仍然位于相应的可绘制文件夹中
  • 如何在Javascript中仅使用过滤器获取唯一数组[重复]

    这个问题在这里已经有答案了 我有一个数组 var a 2 3 4 5 5 4 我想从给定的数组中获取唯一的数组 例如 b 2 3 4 5 我努力了 a filter function d return b indexOf d gt 1 而且
  • 如何实现brew 配方的安装或升级?

    我想安装一个酿造配方或升级它 如果已经使用 bash 安装 仅当最后未安装配方时 该命令才应返回非零退出代码 附言 应该注意的是brew install xxx返回错误代码如果xxx已安装 背景 https github com Homeb
  • 如何从存储中获取准确的容量

    我想以编程方式从实习存储中读取确切的容量 我使用的是 Samsung Galaxy S7 Edge 32GB 设备 在预装的三星文件管理器 德语 Eigene Dateien 中 它显示了 32GB 的总容量 即使在菜单 gt 设置 gt
  • 实体框架 - 通过同一列中的多个条件进行选择 - 引用表

    示例场景 两张表 order and 订单项目 关系一对多 我想选择至少有一个价格为 100 的 orderItem 和至少一个价格为 200 的 orderItem 的所有订单 我可以这样做 var orders from o in ko
  • 用于查找给定文档的词频的 Python 脚本

    我正在寻找一个简单的脚本 可以找到给定文档的单词频率 可能通过使用便携式词干分析器 是否有任何库或简单的脚本可以执行此过程 use nltk http www nltk org import nltk YOUR STRING Your wo
  • Typescript Node.js 最简单的设置不起作用 - 错误 TS2307:找不到模块“fs”

    我已经全局安装了 TS 和节点类型 PS C Projects Test gt npm list global depth 0 C Users Jan AppData Roaming npm types email protected cd
  • 我知道react-native的TextInput有一个onsubmit回调函数,但是我实际上如何制作那个提交按钮?

    我想知道如何呈现此按钮 如果是的话 它是否会自动绑定到输入字段中的文本 基本上onSumbitEditing当从 Android 软键盘上单击 go 按钮时 将触发并提供事件 如下例所示
  • 承诺:转到下一个错误函数[重复]

    这个问题在这里已经有答案了 如何使用 Promise 链调用下一个错误函数 我认为错误函数内的返回会自动调用下一个错误函数 Called in a controller dataService saveRequest then functi
  • 如何在VSCODE中设置tasks.json文件来编译Fortran程序?

    我想设置 VScode 操作系统 Windows 10 来创建并编译用 Fortran 90 95 编写的程序 我可以通过在终端中输入以下内容来完成此操作 gfortran o Example exe Example f90进而 Examp
  • 捕获 python 程序的标准输出

    我正在尝试编写一个 C 程序来捕获 python 程序中的标准输出 我的问题是所有输出都是在程序执行之后而不是实际发生时出现的 举个例子 对于这个 python 程序 print Hello time sleep 2 print Hello
  • 在 net core 控制台应用程序中使用 Web 服务器进行简单路由

    我在使用 kestrel 进行路由时遇到问题 我找不到任何关于如何在 netcore 控制台应用程序内部实现此功能的好的教程 我想构建一个简单的 Web 服务器 它有 2 3 个可以访问的端点 public class WebServer
  • 由于非 Ascii 字符,顶点着色器无法编译?

    因此 我开始使用 OpenGL 与 glew 和 GLFW 来创建游戏引擎 在开始使用着色器时我几乎立即遇到了问题 它们没有被使用或者即使被使用也没有任何效果 我一直在用大量其他示例检查我的代码 它们都匹配 没有任何看起来不合适的地方 我开
  • 访问控制允许来源语法

    我希望允许所有的跨源资源共享from example com 的子域 因此 我将如下所示的跨源资源共享标头添加到了页面中subdomain1 to example com
  • 如何将全部破坏限制为仅长单词?

    我正在尝试全部打破很长的单词 还有一些很长的uuid col在基于引导程序的模板中 但是当我对所有列使用以下样式时 它会破坏所有内容 在示例中检查不良破坏 即使单词正常换行的地方工作得很好 在示例中检查预期破坏 有没有办法我可以尽可能使用正
  • Webpack 无法加载字体(ttf)

    目前我有 3 种字体想要添加到我的 React 项目中 一个 一个光 一个大胆 我的文件结构 src fonts A ttf A light ttf A bold ttf styles base base scss styles scss