【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,
})
相关推荐
橘子编程30 分钟前
JavaScript与TypeScript终极指南
javascript·ubuntu·typescript
叫我一声阿雷吧1 小时前
JS 入门通关手册(45):浏览器渲染原理与重绘重排(性能优化核心,面试必考
javascript·前端面试·前端性能优化·浏览器渲染·浏览器渲染原理,重排重绘·reflow·repaint
大家的林语冰1 小时前
《前端周刊》尤大开源 Vite+ 全家桶,前端工业革命启动;尤大爆料 Void 云服务新产品,Vite 进军全栈开发;ECMA 源码映射规范......
前端·javascript·vue.js
jiayong232 小时前
第 8 课:开始引入组合式函数
前端·javascript·学习
天若有情6732 小时前
【C++原创开源】formort.h:一行头文件,实现比JS模板字符串更爽的链式拼接+响应式变量
开发语言·javascript·c++·git·github·开源项目·模版字符串
软件工程师文艺3 小时前
从0到1:Claude Code如何用React构建CLI应用
前端·react.js·前端框架
M ? A3 小时前
Vue 迁移 React 实战:VuReact 一键自动化转换方案
前端·vue.js·经验分享·react.js·开源·自动化·vureact
yuki_uix3 小时前
重排、重绘与合成——浏览器渲染性能的底层逻辑
前端·javascript·面试
止观止3 小时前
拥抱 ESNext:从 TC39 提案到生产环境中的现代 JS
开发语言·javascript·ecmascript·esnext
yuki_uix4 小时前
虚拟 DOM 与 Diff 算法——React 性能优化的底层逻辑
前端·react.js·面试