当我尝试使用vue-fontawesome框架和@nuxtjs/fontawesome框架时,我遇到了一个关于Nuxtjs的错误,这是错误:
[nuxt] [request error] Cannot read properties of undefined (reading 'component')
at $id_c50a96b3 (./.nuxt/dist/server/server.mjs:3239:31)
at async __instantiateModule__ (./.nuxt/dist/server/server.mjs:19193:3)
这是我在nuxt.config.ts
中的代码:
import { defineNuxtConfig } from 'nuxt'
export default defineNuxtConfig({
modules: [
'@nuxtjs/fontawesome'
],
fontawesome: {
icons: {
solid: ['faXmark']
}
}
})
这是我想使用图标的组件:
<template>
<div :class="props.className">
<font-awesome-icon icon="xmark" />
<slot />
</div>
</template>
顺便说一下,错误只出现在我试图加载页面时,而不是在我运行它时。
3条答案
按热度按时间xzabzqsa1#
我推荐antfu的解决方案,这是IMO迄今为止处理任何类型图标的最佳方法:https://github.com/antfu/unplugin-icons
检查更多的in-depth article解释为什么和如何整个事情的工作。
下面是如何将其与Nuxt3一起使用的快速方法,首先是要求:
pnpm i --shamefully-hoist
pnpm add -D unplugin-icons
的包将其放入
nuxt.config.ts
文件中我不知道如何修复类型,所以我忽略了这里的检查。
完成后,您可以转到icones.js并查找您的特定图标,单击它,您将看到以下内容
注意格式是
[collection-id]:[name]
,所以在您的情况下是fa6-solid:xmark
。现在您可以转到任何
.vue
文件并在导入时将fa6-solid:xmark
转换为~icons/fa6-solid/xmark
。您的Nuxt3项目现在可以自动安装相关的包了。
就这样!🎉
这个
autoInstall
特性大部分时间都能工作,但没有经过100%的实战测试。我注意到它只能同时安装2个图标包(一个简单的重新启动服务器修复了这个问题)。
如果自动安装功能失败,您可以随时转到npm并查找
@iconify-json/[your collection id]
(又名@iconify-json/fa6-solid
)。从我所看到的来看,NPM很善于提出好的建议。
下面是如何使用其他图标的示例
实际的结果,完全可以用CSS定制,如您所见
如果需要的话,您可以查看我的github repo以获得一个完整的示例。
PS:一个auto-import feature正在制作中。欢迎订阅Github PR了解更多更新。
PS2:如果你有一个预定义的图标数组,那么这个图标甚至可以用于动态组件,这样打包者就可以通过分析阅读提前知道它们。
pbpqsu0x2#
您还可以使用相当新的包nuxt-icon,它是由CEO of NuxtLabs创建的,并用于nuxt3/content2入门模板content-wind中。
nuxt.config.ts
只需从icones.js.org复制并粘贴你想要的图标名称。软件包将获取图标并粘贴到你的代码中。你有100k+个图标可以选择。
yzuktlbb3#
仅在使用自定义SVG图标时适用
当我使用自定义svg图标(没有图标框架)时,我通常使用vite-svg-loader。
nuxt.config.ts
设置完成后,我创建了一个新组件,以后可以在其他组件中使用(components/IconLoader.vue):
现在,我可以使用我们新的自定义图标加载器组件(例如App.vue)轻松显示图标:
我通常从https://heroicons.dev得到我的图标,他们与顺风工作得很好。