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




核心依赖版本
expo-cli: 4.11.0expo: ~40.0.0expo-app-loading: ^1.0.1react: 16.13.1react-dom: 16.13.1react-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
相关产品推荐
相关产品推荐

