uniapp字体ttf在小程序报错,解决方法

在这里插入图片描述

文章目录

  • 导文
  • 解决方法1:把字体改成base64格式
  • 解决方法2:改成线上模式


导文

报错1:
uniapp 小程序报错:app.js错误:
Error: Module build failed (from ./node_modules/mini-css-extract-plugin/dist/loader.js):
ModuleBuildError: Module build failed (from ./node_modules/postcss-loader/src/index.js):
RangeError: Maximum call stack size exceeded
at String.match ()
at updateDecl (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-urlrewrite\lib\urlrewrite.js:102:26)
at D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:188:28
at D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:144:26
at AtRule.each (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:110:22)
at AtRule.walk (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:143:21)
at D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:146:32
at Root.each (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:110:22)
at Root.walk (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:143:21)
at Root.walkDecls (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-comment\node_modules\postcss\lib\container.js:186:25)
at D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss-urlrewrite\lib\urlrewrite.js:112:52
at D:\HBuilderX\plugins\uniapp-cli\node_modules@dcloudio\vue-cli-plugin-uni\packages\postcss\index.js:168:7
at LazyResult.run (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss\lib\lazy-result.js:288:14)
at LazyResult.asyncTick (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss\lib\lazy-result.js:212:26)
at LazyResult.asyncTick (D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss\lib\lazy-result.js:225:14)
at D:\HBuilderX\plugins\uniapp-cli\node_modules\postcss\lib\lazy-result.js:217:17
at D:\HBuilderX\p
报错二:
uniapp报错:[渲染层网络层错误] Failed to load local font resource /static/fonts/Kingsoft_Cloud_Font.ttf-do-not-use-local-path-./common/main.wxss&2359&7
the server responded with a status of 500 (HTTP/1.1 500 Internal Server Error)
(env: Windows,mp,1.06.2402040; lib: 3.4.7)

解决方法1:把字体改成base64格式

推荐一个转码平台:
https://www.giftofspeed.com/base64-encoder
当有一个字体文件(如 .ttf.woff.woff2)的 base64 编码版本时,可以在 CSS 的 @font-face 规则中直接使用该 base64 编码,而不是通过 URL 链接到字体文件。这样做的好处是字体文件被嵌入到 CSS 文件中,减少了 HTTP 请求的数量,但缺点是 CSS 文件可能会变得非常大。
在这里插入图片描述

以下是如何在 CSS 中使用 base64 编码的字体:

  1. 首先,需要获取字体文件的 base64 编码版本。
  2. 将 base64 编码的字体数据插入到 CSS 文件的 @font-face 规则中。需要使用 url('data:font/woff2;base64,...')(或其他适当的 MIME 类型,如 font/woffapplication/x-font-ttf)来指定 base64 数据。

示例:

@font-face {
    font-family: 'MyCustomFont';
    src: url('data:font/woff2;base64,d09GMgABAAAAAGVUAAEAAAAABigAAAIYAAEACAAAAAgAAAAAIAAAAAEoAAAAJnB....') format('woff2'),
         /* 你可能还需要包含其他格式的 base64 编码,如 woff 或 ttf,但为了简洁这里省略了 */
         fallback: url('fonts/myfont.woff2') format('woff2'); /* 提供一个备选 URL 以防 base64 数据过大或不被支持 */
    font-weight: normal;
    font-style: normal;
}

注意

  • d09GMgABAAAAAGVUAAEAAAAABigAAAIYAAEACAAAAAgAAAAAIAAAAAEoAAAAJnB.... 是假设的 base64 编码数据,你需要替换为实际的编码数据。
  • fallback: url('fonts/myfont.woff2') format('woff2'); 是一个可选的备选方案,用于在 base64 数据过大或不被支持的情况下提供备选字体文件。这个属性不是标准的 CSS 属性,但它可以作为一个注释或用于未来可能的实现。
  • 由于 base64 编码的数据可能会非常长,因此建议只在必要时使用它,并考虑文件大小和加载性能的影响。
  • 确保你的 CSS 文件压缩和缓存策略得当,以减少传输大小和提高加载速度。

解决方法2:改成线上模式

使用wx.loadFontFace加载字体,微信小程序提供了wx.loadFontFace API 来加载自定义字体。通过此API,可以指定字体名称、字体文件路径,并在加载成功后应用该字体。

在你的代码中,你已经尝试使用wx.loadFontFace来加载一个名为BoldFont的字体,字体文件位于https://www.zitixiazai.cn/static/upload/other/20220914/1663119174123134.ttf。但是,如果此代码在运行时报错,可能是由以下几个原因造成的:

示例代码
以下是一个更新后的示例代码,它包括了错误处理的改进:

	wx.loadFontFace({
				family: 'BoldFont',
				source: 'url("https://***/static/upload/other/20220914/1663119174123134.ttf")',
				success(res) {
					console.log(res.status)
					// self.setData({ loaded: true })
				},
				fail: function (res) {
					console.log(res.status)
				},
				complete: function (res) {
					console.log(res.status)
				}
			})
	.body-num-text {
		font-family: 'BoldFont', MyCustomFont, sans-serif; /* 添加默认字体作为备选 */  
	}

您好,我是肥晨。
欢迎关注我获取前端学习资源,日常分享技术变革,生存法则;行业内幕,洞察先机。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/750062.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

【Java Web】Pinia实现组件间数据共享

目录 一、Pinia概述 二、Pinia基本用法 一、Pinia概述 在前端工程化的开发环境中,当多个组件(.vue)文件需要使用同一个数据对象时,传统的方法可以使用组件传参或者路由传参来解决但此两种方式都有自己的缺点。pinia可以将多个组件需要共享使用的数据单独…

2024热门骨传导蓝牙耳机怎么选?超全的选购攻略附带好物推荐!

对于很多喜欢运动健身的小伙伴,在现在市面上这么多种类耳机的选择上,对于我来说的话还是很推荐大家去选择骨传导运动耳机的,相较于普通的入耳式蓝牙耳机,骨传导耳机是通过振动来传输声音的,而入耳式耳机则是通过空气传…

餐饮冷库安全守护神:可燃气体报警器检定的科学性与有效性

随着餐饮业的快速发展,冷库成为储存食材、保证食品质量的重要场所。 然而,由于冷库环境的特殊性,如密封性强、温度低、湿度大等,一旦冷库内发生可燃气体泄露,后果将不堪设想。因此,在餐饮冷库中安装并合理…

武汉星起航:自运营团队深耕亚马逊,智慧运营打造跨境电商新标杆

在全球化的浪潮下,跨境电商已成为企业拓展海外市场的重要渠道。而亚马逊作为全球领先的电商平台,其巨大的市场潜力和成熟的运营体系吸引了无数卖家竞相入驻。武汉星起航电子商务有限公司正是众多成功入驻亚马逊的卖家之一,其自运营团队凭借多…

使用Python Selenium,动态网页不再是难题!

目录 1、直接执行JS代码 🌐 1.1 execute_script基础用法 1.2 带参数执行JS函数 1.3 获取执行结果 2、使用execute_async_script异步执行 🔄 2.1 适用场景分析 2.2 实现异步操作示例 2.3 错误处理与调试技巧 3、JS与页面元素交互 👤 3.1 修改DOM属性 3.2 触发事…

独立开发者系列(10)——fastadmin后台框架的认识

软件开发项目涉及到的东西非常多,作为独立开发者,普遍性的面对的是中小项目。而其中接单的情况下,以WEB方向的居多。其中主要有以下这么些类的:搭建官网cms 就是常见的资讯发布平台,发布一些企业新闻/活动宣传,纯粹是…

鸿蒙期末项目(3)

服务器搭建完成之后,编写了诸多api用于数据传输工作(略) 编写完成之后,回到鸿蒙开发工具,开始编写搜索页面的代码。 打开搜索页面时,先会展示历史搜索记录(如果有的话),…

爬取必应关键字搜索结果url

上代码 import aiohttp import asyncio from lxml import etree import aiofiles import time import random aiohttp 和 asyncio 用于异步HTTP请求和事件循环。 lxml 用于解析HTML。 aiofiles 用于异步文件操作。 time 和 random 用于控制爬取速度。 headers {User-Agent: M…

mysql安装创建数据库防止踩坑

为了安装MySQL的家人们走弯路,稍微有些啰嗦,讲述我安装的时遇到的问题,如何解决。仔细看看离成功不远。 mysql下载链接 MySQL :: Download MySQL Community Server windows下安装mysql-8.0.29-winx64,下载安装包后解压到文件夹中…

2024十大首码地推拉新app平台,一手首码对接平台!

到了2024年,地推新应用的接单平台成为创业者们关注的焦点。对于地推行业的从业人员而言,选择一家拥有一手单资源的平台至关重要,因为这直接关系到他们的利益。 2024年如果想要进行app地推活动,却没有人脉渠道的困扰,建…

谷歌网络营销中SEO的策略有哪些?

在网络营销中,SEO(搜索引擎优化)是一种关键策略,旨在提高网站在搜索引擎结果中的排名。首先,要进行关键词研究,找出潜在客户使用的搜索词。接下来,优化网站内容,使其包含这些关键词&…

【Java Web】Ajax异步请求

目录 一、Ajax概述 二、Ajax执行原理 三、实现Ajax的请求 一、Ajax概述 传统情况下,浏览器与服务端的交互都是采用同步交互的方式进行的;此交互方式用户在向服务端发送请求后只有等到服务端的响应报文回来后用户才能在标签页上进行其它操作,即…

openlayer 鼠标点击船舶,打开船舶简单弹框

背景: 对创建的地图对象,可以添加上监听事件,常用的有:地图点击事件、鼠标移动事件。 通过监听这些事件,又可以区分不同图层的不同要素,获取不同数据; 根据这些数据,又可以发起网络请…

电脑的D盘E盘F盘突然消失了 电脑只剩下C盘了其他盘怎么恢复

现如今随着时代的发展,无纸化办公成为主流,这主要归功于电脑,能够通过电脑完成的工作绝不使用纸质文件,这不仅提高了工作效率,也让一些繁杂的工作变的更加简单。不过电脑毕竟是电子产品,不可避免的会出现一…

【包邮送书】深度学习与信号处理

欢迎关注博主 Mindtechnist 或加入【智能科技社区】一起学习和分享Linux、C、C、Python、Matlab,机器人运动控制、多机器人协作,智能优化算法,滤波估计、多传感器信息融合,机器学习,人工智能等相关领域的知识和技术。关…

win11家庭版没有gpedit解决

1、右键桌面,新建记事本,把后缀名txt修改成bat 2、输入以下命令: echo offdir /b C:\Windows\servicing\Packages\Microsoft-Windows-GroupPolicy-ClientExtensions-Package~3*.mum >List.txtdir /b C:\Windows\servicing\Packages\Micr…

electron-builder创建桌面应用

一、利用vue-cli创建vue项目 创建electron方式有很多,这里说的是vuecli创建的项目,通过安装electron-builder插件创建 也可以通过electron-vite构建项目 : https://cn.electron-vite.org/guide/ vue-cli构建 vue create XXX项目名 //按提示操…

cad怎么导出为图片?分享四种导出方法

cad怎么导出为图片?在工程设计、建筑设计、机械设计等领域,CAD图纸的编辑和分享是一项日常工作。然而,如何将CAD图纸高效、准确地导出为图片格式,一直是设计师们关注的焦点。今天,就为大家推荐四款强大的CAD导出图片软…

Ubuntu 20.04安装显卡驱动、CUDA、Pytorch(2024.06最新)

文章目录 一、安装显卡驱动1.1 查看显卡型号1.2 根据显卡型号选择驱动1.3 获取下载链接1.4 查看下载的显卡驱动安装文件1.5 更新软件列表和安装必要软件、依赖1.6 卸载原有驱动1.7 禁用默认驱动1.8 安装lightdm显示管理器1.9 停止显示服务器1.10 在文本界面中,禁用X…

Java毕业设计 基于SSM vue药店管理系统小程序 微信小程序

Java毕业设计 基于SSM vue药店管理系统小程序 微信小程序 SSM 药店管理系统小程序 功能介绍 用户 登录 注册 首页 药品信息 药品详情 加入购物车 立即购买 收藏 购物车 立即下单 新增收货地址 我的收藏管理 用户充值 我的订单 留言板 管理员 登录 个人中心 修改密码 个人信息…