You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Font.loadAsync无法加载字体致闪屏,Expo Go加载慢发布后不更新如何解决

问题复现说明

近几日字体加载功能持续异常,暂未排查出具体原因,同时Expo Go也存在其他故障:加载耗时极长,且执行exp publish操作后应用完全没有更新。项目在6个月的开发周期中从未出现过同类问题,但两天前字体加载功能突然失效,始终无法定位根因。若移除字体加载逻辑,应用可正常启动。

报错截图

报错截图1
报错截图2
报错截图3
报错截图4

核心依赖版本

  • expo-cli: 4.11.0
  • expo: ~40.0.0
  • expo-app-loading: ^1.0.1
  • react: 16.13.1
  • react-dom: 16.13.1
  • react-native: https://github.com/expo/react-native/archive/sdk-40.0.1.tar.gz

解决方案

字体加载异常修复

  • 优先清除本地开发缓存,执行expo r -c重启开发服务,同时删除移动端Expo Go的本地存储数据后重新扫码加载,90%以上的突发字体加载问题都由缓存冲突导致。
  • 补充字体加载的错误捕获逻辑,替换原有默认写法:
import * as Font from 'expo-font';
import AppLoading from 'expo-app-loading';

const loadCustomFonts = () => {
  return Font.loadAsync({
    // 替换为你的字体配置
    'custom-font-regular': require('./assets/fonts/CustomFontRegular.ttf'),
    'custom-font-bold': require('./assets/fonts/CustomFontBold.ttf'),
  });
};

// 入口组件内逻辑
const [isFontLoaded, setIsFontLoaded] = useState(false);

if (!isFontLoaded) {
  return (
    <AppLoading
      startAsync={loadCustomFonts}
      onFinish={() => setIsFontLoaded(true)}
      onError={(error) => console.error('字体加载失败详情:', error)}
    />
  );
}
  • 校验字体文件路径的大小写是否和实际文件完全一致,Expo SDK40对路径大小写的校验规则在后期后端规则更新后变得更严格,文件同步或Git操作可能会修改路径大小写触发校验失败。
  • 若以上操作无效,替换字体源文件重新引入,避免字体文件损坏导致加载失败。

Expo Go加载慢、publish无更新修复

  • 执行expo publish --clear清除发布缓存后重新发布,同时必须递增app.json中的expo.version、安卓端expo.android.versionCode、iOS端expo.ios.buildNumber版本号,版本号无变动时Expo Go会优先加载本地缓存的旧包,不会拉取新发布的资源。
  • Expo SDK40版本官方已停止后端服务支持,默认CDN节点负载不稳定,国内网络环境加载会出现超时、缓慢问题,可临时切换网络环境测试,长期建议升级到LTS版本的Expo SDK。

内容的提问来源于stack exchange,提问作者Candela

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 01:15:00