问题描述

在一次开发任务中遭遇的一个问题

正常使用 element-ui的icon时

却发现不知道为什么显示都为正方形小框框

问题搜索

1、问题查找方向一 ——版本问题

于是,我就将element-ui 版本由 2.12.0 提升为 2.15.2

npm install element-ui@2.15.2 --save

但是无法解决这个问题
失败

2、问题查找方向二 ——webpack配置问题

Vue.config.js 配置问题
也就是 webpack的配置问题
通过将vue-cli预设配置弹出的操作,我查看了一下 Vue-cli 预设Webpack配置,和我自己的webpack配置,没看出问题来。感觉一切正常

vue inspect > output.js

3、问题查找方向三 —— 看浏览器请求


对比正常能加载图标的项目和出问题的项目
我发现了,不加载图标是因为没有请求图标字体文件包。所以,这个就是问题的主因

问题追溯

在发现了问题之后,我就继续往下看,为什么我那个项目会不发送字体文件的请求呢?

随便寻找一个可以正常显示的图标。按照图上操作,我们就可以看到字体的请求


而后,我们对问题图标进行上述操作,就能发现问题所在。
问题出现的原因,就是我这边,对文件的url的请求解析得有问题

那么,问题就出来了。

出现问题的原因和解决方案

因为file-loader@6.0.0版本中,为了优化性能新增了一个关键的配置项esModule 。这个配置项的作用,是指定引入文件的方式,是否指定es module的形式引入(也就是 improt name from ‘xxxx’)这个配置项默认值是true,如果是true的情况下,那再使用require或者<imgsrc=“./xxxx.jpg”>引用方式就会出现上面的问题。

我这边出现这个问题的原因是:

我自己安装了file-loader 和 url-loader
没有使用Vue-cli 预设的 file-loader 和 url-loader 版本

解决方案一

卸载 file-loader 和 url-loader 使用 Vue-cli 预设的版本

npm uninstall file-loader url-loader

解决方案二

修改Vue.config.js 内配置

将 esModule设置为 false。在 file-loader 或 url-loader 内设置
我使用的是 chainWebpack
所以配置改为

    const fontsRule = config.module.rule('fonts')fontsRule.uses.clear()fontsRule.test(/\.(woff2?|eot|ttf|otf)(\?.*)?$/i).use('file-loader').loader('url-loader').options({esModule: false,fallback: {loader: 'file-loader',options: {// name: `${ process.env.NODE_ENV === 'production' ? name + '/' : name + '/'}fonts/[name].[hash:8].[ext]`name: `${name}'/fonts/[name].[hash:8].[ext]`}}})

如果是普通配置,那就如下修改

 {test:/\.(woff2?|eot|ttf|otf)(\?.*)?$/i,use: {loader: 'url-loader' ,options: {esModule: false,limit: 10 * 1024  // 10KB}}}

Vue 不加载字体包 导致elementUI的icon显示为正方形小框框问题解决相关推荐

  1. IntelliJ IDEA中无法加载jar包导致出现“cannot resolve symbol...”问题的解决

    IntelliJ IDEA中无法加载jar包导致出现"cannot resolve symbol..."问题的解决 之前也经常碰到这样的错误,通过reimport.清缓存等方法都可 ...

  2. vue动态引入外部CDN导致线上项目页面无法显示 - 看了不亏

    vue动态引入外部CDN导致线上项目页面无法显示 - 看了不亏 也不知道是什么原因?引用了几个远程的cdn文件,但是就是失效,cdn引入代码如下: cdn代码如下: <link rel=&quo ...

  3. android 设置字体包 字体包导致字体偏移 字体内边距问题(已解决)

    字体包存放位置 设置字体包方法1:(全局字体包) import android.content.Context; import android.graphics.Typeface;import jav ...

  4. vue使用ttf字体包压缩 字蛛 font-spider

    1.可以先建一个文件夹 里面包括 2.1>.css文件夹->index.css     2>.font(里面放的是ttf字体包)  3>.index.html 引入 4> ...

  5. iOS加载字体包(此处已思源宋体为例)

    1.字体包导入工程 确保target是勾选状态 2.双击字体包安装字体 应用程序-字体册 像下面就是装上了 3.plist 文件添加该字体包的名字 4.[UIFont fontWithName:@&q ...

  6. vue项目导入字体包 以及 根据所需文字压缩字体包

    前端项目使用的字体包格式为ttf,如果手上的字体包格式是otf,首先要进行格式转换 使用Font Creator 传入otf文件,另存为ttf文件即可,以 SourceHanSerifCN-Light ...

  7. vue使用“.ttf“字体包

    第一步 将ttf文件放到项目目录中 第二步 在css中引入 font.css @font-face{font-family: '中黑简体';src: url('时尚中黑简体.TTF');font-we ...

  8. vue+element密码和确认密码校验以及隐藏显示密码的小眼睛

    例:效果 <el-form-item label="新密码" prop="newPassword"><el-input v-model=&qu ...

  9. 自定义字体包过大,导致页面加载缓慢的问题解决

    // 字体包过大,在渲染页面客户端时加载缓慢,导致页面加载缓慢影响用户体验.需要处理字体包: // 1. 转码,使得不受不同浏览器之间的限制 2.压缩:使得加载更迅速 // 使用中文字体压缩器:fon ...

最新文章

  1. WPF入门教程系列九——布局之DockPanel与ViewBox(四)
  2. 一文了解什么是指数族分布
  3. 斯坦福大学Andrew Ng - 机器学习笔记(3) -- 神经网络模型
  4. @value 静态变量_你理解 PHP 中的静态方法吗?
  5. unix网络编程——ioctl 函数的用法详解
  6. 一篇讲清:数据采集中的安全与隐私
  7. Struts2的action中处理JSONP方式提交的中文乱码问题:
  8. NVDKC6416平台H.264算法优化
  9. 软件测试中开发团队和测试团队的职责
  10. 我所知道的几种display:table-cell的应用
  11. 疑似realme旗舰新机入网:采用升降前置摄像头
  12. 苹果或在 WWDC 宣布放弃英特尔转向自研 5nm ARM 芯片,这次时机成熟了?
  13. JavaScript中的六种错误类型
  14. 弱人工智能才是未来AI研究的主流方向
  15. 软件工程—需求分析阶段
  16. 文件服务器实现网络打印,图文详解 服务器共享打印设置
  17. python万年历节气_python3实现万年历(包括公历、农历、节气、节日)
  18. 海豚调度器初次使用 .......
  19. 27. 尚融宝申请借款额度
  20. 转1:Python字符编码详解

热门文章

  1. centOS6.5 安装后无法启动无线上网
  2. Redis集群数据同步与选举
  3. Web开发基本准则-55实录-缓存策略(转)
  4. 完美校园小程序打卡程序
  5. iar 预编译会把非条件的去掉_IAR error汇总
  6. IRB5400机器人保养手册
  7. gin结构体序列化转换
  8. java11 二次发布_第二次Java出题
  9. 基于MATLAB图像harris角点提取算法仿真
  10. 压电陶瓷换能器导纳圆图公式推导及匹配