【问题标题】:Webpack: loading iconic fontsWebpack:加载标志性字体
【发布时间】:2018-07-09 18:07:15
【问题描述】:

我已经安装了font-awesome:

npm install font-awesome

我在 webconfig 中添加了这些规则:

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

在我的main.scss 中,我添加了这个导入:

@import "font-awesome/scss/font-awesome.scss";

font-awesome css 规则已加载到浏览器中,但未加载字体。

似乎_localhost/fonts/fontawesome-webfont.woff2?v=4.7.0 上的浏览​​器请求了字体。但是,响应是主 html 页面:

我认为这个问题与字体有关,进入nodo_modules/font-awesome/fonts/。我认为这些文件无法访问,因为它们没有被 webpack“移动”到可访问的地方......那么,在 webpack 结束“捆绑过程”后它们位于哪里?

编辑

我已将测试更改为:

{ test: /\.(ttf|eot|otf|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "file-loader" }

但是,当浏览器尝试加载字体时,响应仍然是 html:

编辑 2

我刚刚意识到在我的tsconfig.json 文件中包含以下内容:

{
  "compilerOptions": {
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["dom", "es6", "es2015", "es2016", "es2017"],
    "noEmitHelpers": true,
    "importHelpers": true,
    "skipDefaultLibCheck": true,
    "pretty": true,
    "sourceMap": true,
    "typeRoots": [
      "node_modules/@types"
    ]
  },
  "exclude": [
    "node_modules",  <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<
    "compiled",
    "src/main.browser.aot.ts",
    "e2e/**/*.ts"
  ],
  "awesomeTypescriptLoaderOptions": {
    "useWebpackText": true,
    "forkChecker": true,
    "useCache": true
  },
  "compileOnSave": false,
  "buildOnSave": false,
  "atom": { "rewriteTsconfig": false }
}

有事吗?

【问题讨论】:

  • 我有同样的问题,但我最终分离了字体并将它们包含在 HTML 文件中。 :(
  • 我认为问题与字体有关,进入nodo_modules/font-awesome/fonts/。我认为这些文件无法访问,因为它们没有被 webpack “移动”到可访问的地方......
  • 听起来很有希望!你试过什么吗?
  • 我在url-loader 存储库here 上添加了一个问题

标签: webpack font-awesome


【解决方案1】:

我不能 100% 确定这是准确的,因为我无法安装 your repo - 我遇到了一些奇怪的、不正确的依赖错误。但我认为问题是:

您的正则表达式未捕获 FontAwesome.otf 文件。

这个测试现在应该可以工作了..

{ test: /\.(ttf|eot|otf|svg)(\?v=[0-9]\.[0-9]\.[0-9])?$/, loader: "file-loader" }

【讨论】:

  • 我刚刚编辑了我的代码。可悲的是,它似乎还失败了......我已经编辑了帖子。真的,真的很奇怪!
  • @Jordi 让我们看看这是 是 webpack/bundling 错误还是其他原因。请创建一个小型入门项目 - 在其中您单独使用 font awesome。只是看看它的表现如何。然后,如果它工作正常 - 将加载的文件与上面图片中的文件进行比较。如果加载了相同的文件,则意味着 webpack 在移动文件时对内容做了一些处理。这个想法是越来越多地隔离问题 - 并确保其他看起来不相关的变量不会发挥作用。做起来不好玩 - 但我认为在这一点上是一个足够好的方法。
猜你喜欢
  • 2020-09-07
  • 1970-01-01
  • 1970-01-01
  • 2016-08-14
  • 1970-01-01
  • 1970-01-01
  • 2018-09-27
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多