【Electron】解决Electron使用阿里iconfont不生效问题(react+vite)

解决Electron使用阿里iconfont不生效问题

问题描述

Electron应用打包后,生产环境渲染层无法加载本地iconfont资源。

javascript 复制代码
import { createFromIconfontCN } from '@ant-design/icons'
const IconFont = createFromIconfontCN({
  scriptUrl: '/iconfont/iconfont.js',
})

查看控制台,发现iconfont.js资源加载失败

这是由于页面加载 iconfont.js/iconfont.css 时,如果路径是绝对路径 /iconfont/iconfont.js 或相对 HTTP 地址,Electron 在本地 file:// 协议下会解析错误。

解决方案

  1. 从 iconfont 下载项目的所有文件(JS/CSS/SVG 等)。
  2. 把这些文件放到 electron-egg 项目的 前端静态目录(比如 app/web/public/iconfont/)。
  3. 在前端代码引用相对路径,例如:
javascript 复制代码
import { createFromIconfontCN } from '@ant-design/icons'
const IconFont = createFromIconfontCN({
  scriptUrl: './iconfont/iconfont.js',
})

此时再看控制台,加载成功

注意事项:

  1. iconfont资源必须要放在public目录下,Vite 会让这个目录里的文件原样复制到打包的 dist,并且开发服务器也能直接访问。
  2. 确保 Vite 基础路径正确
javascript 复制代码
// vite.config.js
import { defineConfig } from 'vite'
import react from '@vitejs/plugin-react'

export default defineConfig({
  plugins: [react()],
  base: './', // 或 '/app/',根据部署路径来设置
})
  1. 不能只放iconfont.js文件,css、woff等文件也要放在iconfont目录下,否则会有样式问题
  2. 可以将路径写在环境变量中,方便开发环境调试,不用频繁下载压缩包
javascript 复制代码
const IconFont = createFromIconfontCN({
  scriptUrl: import.meta.env.VITE_ICONFONT_URL,
})
相关推荐
三天不学习31 分钟前
Egg.js 4 突然爆火,原因是否归结于AI 原生落地需求爆发?
前端·javascript·全栈·egg.js
xcs194051 小时前
前端 vue 的前端页面debugger 进不去
前端·javascript·vue.js
小宋10217 小时前
A2UI从零实战:Agent安全生成交互界面与事件回传
javascript·人工智能·安全·交互
大包子7 小时前
structuredClone vs lodash.cloneDeep:核心差异与选型指南
javascript·vue.js
不可能片场7 小时前
命令行中文变问号 我用环境变量救了场
前端·electron
lerhxx7 小时前
AI 应用中的上下文管理 —— 从"上下文窗口"到"分层压缩"的工程实践
前端·javascript
Mahut8 小时前
我在 Mac 上做了个本地剪辑器
javascript·架构·产品
汉堡大王95278 小时前
GPT-6 上线 48 小时,我扒开了 Intelligent UI 的运行机制:DIL、沙箱 Worker 和一个 React 式协调器
前端·javascript·后端
hai_android8 小时前
Chat 聊天模块功能总结
前端·javascript·vue.js
创世虚拟世界9 小时前
我做了一个 3D 虚拟世界基底,基于这个再做 3D 虚拟世界或者元宇宙,会事半功倍
javascript·人工智能·3d·gitee·虚拟现实