在 vue 项目中引用 fontawesome , 按照官方说明如下步骤操作

1、 终端中执行

$ npm i --save @fortawesome/fontawesome-svg-core
$ npm i --save @fortawesome/free-solid-svg-icons
$ npm i --save @fortawesome/vue-fontawesome

2、src/main.js 中引入注册对应包(剧透下解决方法之一: 把下面代码中的 faUserSecret 都改成 fas 就 ok 了)

import Vue from 'vue'
import App from './App'
import { library } from '@fortawesome/fontawesome-svg-core'
import { faUserSecret } from '@fortawesome/free-solid-svg-icons'
import { FontAwesomeIcon } from '@fortawesome/vue-fontawesome' library.add(faUserSecret) Vue.component('font-awesome-icon', FontAwesomeIcon) Vue.config.productionTip = false /* eslint-disable no-new */
new Vue({
el: '#app',
components: { App },
template: '<App/>'
})

3、src/App.vue 中使用

<template>
<div id="app">
<font-awesome-icon icon="user-secret" />
</div>
</template> <script>
export default {
name: 'App'
}
</script>

4、ok 运行, 一个小黑人图标成功显示。但当我试图使用别的图标时

<font-awesome-icon icon="play" />

我喜提了如下报错 ( ̄O ̄;)

Could not find one or more icon(s) {
prefix: "fas",
iconName: "play"
}

无脑继续看官网文档,复制粘贴了几个例子进去,都是报错。于是跟进源码到这段:

function findIconDefinition(iconLookup) {
var _iconLookup$prefix = iconLookup.prefix,
prefix = _iconLookup$prefix === void 0 ? 'fa' : _iconLookup$prefix,
iconName = iconLookup.iconName;
if (!iconName) return;
return iconFromMapping(library.definitions, prefix, iconName) || iconFromMapping(namespace.styles, prefix, iconName);
}

根据传入的 icon 属性, 会去 library.definitions 里面找图标数据, 这时候能看到  library.definitions 的值是:

{
"fas": {
"user-secret": [448, 512, [], "f21b", "M383.9 308.3l23.9-62.6...babalabala..."]
}
}

才恍然大悟,真是被自己蠢哭了。一开始从官网复制粘贴的太顺手,忽略了这里

import {faUserSecret} from '@fortawesome/free-solid-svg-icons'

我只引用了 faUserSecret 一个图标,同时 library 里也只加了这一个

library.add(faUserSecret)

上面原因找到了,解决就简单了。

解决方案

方案一:每次按需引入,只添加当前页面需要使用的图标

import {faUserSecret,faPlay} from '@fortawesome/free-solid-svg-icons'
ibrary.add(faUserSecret,faPlay)
<font-awesome-icon icon="user-secret"

方案二:一次性引入整个图标库,后面想用哪个用哪个,不用反复的去添加注册

import {fas} from '@fortawesome/free-solid-svg-icons'
ibrary.add(fas)
<font-awesome-icon icon="user-secret" />
<font-awesome-icon icon="play" />

以上两种方案,各有千秋没有对错,看实际情况用就是了。

( ps: 点进 /@fortawesome/free-solid-svg-icons/ 在 index.d.ts 里面可以找到所有可引用的图标定义 )

vue 引入 fontawesome 报错 Could not find one or more icon(s) 解决的更多相关文章

  1. 【Vue.js】vue引入组件报错:该组件未注册?

    [Vue warn]: Unknown custom element: <QuestionnaireOption> - did you register the component cor ...

  2. vue引入elementUI 报错

    在main.js里面引入import 'element-ui/lib/theme-default/index.css'中报错,无法启动项目,这是把package.json里面的webpack改成 1 ...

  3. vue引入iconfont报错

    参考链接:https://blog.csdn.net/weixin_37215881/article/details/89237213

  4. electron-vue 引入OpenLayer 报错 Unexpected token export

    electron-vue 引入OpenLayer 报错 Unexpected token export 解决办法: 在 .electron-vue/webpack.renderer.config.js ...

  5. delphi 调用Webservice 引入wsdl 报错 document empty

    delphi 调用Webservice 引入wsdl 报错 document empty 直接引入wsdl 地址报错 document empty 解决办法:在浏览器里保存为xml文件,然后在开发环境 ...

  6. Vue自定义指令报错:Failed to resolve directive: xxx

    Vue自定义指令报错 Failed to resolve directive: modle 这个报错有2个原因: 1.指令单词拼错 2.Vue.directive() 这个方法没有写在 new Vue ...

  7. 新引入thinkphp报错“应用目录[./Application/]不可写,目录无法自动生成! 请手动生成项目目录~”

    新引入thinkphp报错“应用目录[./Application/]不可写,目录无法自动生成! 请手动生成项目目录~”, 其主要原因是文件夹的权限问题,手动将项目文件夹权限更改为可读可写就OK,具体操 ...

  8. php Yaf_Loader::import引入文件报错的解决方法

    php Yaf_Loader::import引入文件报错的解决方法 改下配置文件就行<pre>yaf.use_spl_autoload=1</pre> 也可以PHP动态修改 毕 ...

  9. vue-cli 引入stylus报错

    在App.vue页面添加以下代码报错: <style lang="stylus" rel="stylesheet/stylus"> </sty ...

随机推荐

  1. SPOJ - QTREE(树链剖分+单点更新+区间最大值查询)

    题意:给出n个点n-1条边的树,有两个操作,一个是查询节点l到r的边的最大值,然后指定边的更改权值. 题解:差不多是树链剖分的模版题,注意每个点表示的边是连向其父亲节点的边. #include < ...

  2. List集合的排序

    最近在写需求时,将某张表中的短信信息拿出,sql写完后,取出来后的结构是List<Map>,在进行到某一步时需要将这个List<Map>进行逆序排序, 当时第一想法便是写一个f ...

  3. (六十二)c#Winform自定义控件-警灯(工业)

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  4. 【Offer】[53-1] 【数字在排序数组中出现的次数】

    题目描述 思路分析 测试用例 Java代码 代码链接 题目描述 统计一个数字在排序数组中出现的次数.例如,输入排序数组{1,2,3,3,3,3,4,5}和数字3,由于3在这个数组中出现了4次,因此输出 ...

  5. VUE中CSS样式穿透

    VUE中CSS样式穿透 1. 问题由来 在做两款H5的APP项目,前期采用微信官方推荐的weui组件库.后来因呈现的效果不理想,组件不丰富,最终项目完成后全部升级采用了有赞开发的vant组件库.同时将 ...

  6. Linux执行后台work相关

    Linux的后台运行.关闭.查看后台任务 & ctrl+z jobs fg bg kill nohup setsid disown screen 1.& 加在命令的最后,可以把命令放到 ...

  7. cmd命令查看已连接的WiFi密码

      实验环境:Windows 10.命令提示符(管理员权限) 一.CMD命令查看WiFi密码 使用方法: ①.运行CMD(命令提示符) (确保无线网卡启用状态)②.输入命令查看WiFi配置文件:  # ...

  8. 粗糙版ORM(附详细注释)

    目录 ORM 其他 ORM代码 数据库表代码 mysql代码 db/models.py db/pymysql_opreator.py ORM 作为数据库表记录 和 python中对象的映射关系中间件 ...

  9. 操作系统原理之I/O设备管理(第六章上半部分下)

    五.I/O软件原理 输入输出软件的总体目标是将软件组织成一种层次结构 低层软件用来屏蔽硬件的具体细节 高层软件则主要是为用户提供一个简洁.规范的界面 设备管理的4个层次: 用户层软件 ->向系统 ...

  10. JVM性能监视

    1,按照如下图步骤将-XX:PermSize及 -XX:MaxPermSize的值修改到足够小,故意造项目启动报错,我设置为32m.然后保存. 2.在IDE中启动tomcat的同时打开dos窗口,使用 ...