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

Expo发布后Ionicons显示问号、Open-Sans字体加载失败求助

排查与解决思路

1. 补全Jenkins项目依赖安装步骤

你的Jenkins发布流程仅安装了全局的eas-cli和expo-cli,但缺失本地项目依赖安装环节。本地发布时依赖已提前安装,但CI环境是干净的,必须添加以下步骤(放在eas login之前):

npm install --no-progress

确保expo-font、图标库等资源相关依赖都被正确安装。

2. 验证自定义字体的路径与文件存在性

  • 检查Jenkins工作目录中../assets/fonts/路径下的字体文件是否存在:如果是monorepo结构(依赖本地common包),需确保Jenkins拉取了整个仓库的所有子目录,而非仅当前项目。
  • 可在Jenkins流程中添加验证命令:
ls -la ../assets/fonts/

若文件不存在,调整代码拉取逻辑;若路径错误,修改Font.loadAsync中的路径(比如改为项目根目录相对路径./assets/fonts/,根据实际结构调整)。

3. 清除Expo缓存后再发布

CI环境可能残留旧缓存,导致资源未被正确打包上传。在expo publish前添加缓存清除命令:

expo r -c  # 清除Expo打包缓存
# 或直接删除缓存目录
rm -rf .expo/

4. 统一图标依赖版本

代码中使用@expo/vector-icons/Ionicons,但package.json仅依赖react-native-vector-icons,两者可能存在版本冲突。Expo SDK 47对应@expo/vector-icons版本为~13.0.0,建议在package.json中添加明确依赖:

"dependencies": {
  "@expo/vector-icons": "~13.0.0",
  // 其他依赖...
}

重新安装依赖后再发布,确保图标库与Expo SDK版本匹配。

5. 检查Jenkins执行权限

确保Jenkins运行用户对项目目录(含字体文件目录)有读取权限,避免因权限不足导致资源无法读取打包。可添加权限检查命令:

ls -ld ../assets/fonts/

若权限不足,执行chmod -R 755 ../assets/fonts/调整。

6. 查看发布时的资源上传日志

在expo publish命令中添加详细日志参数,确认资源是否被正确上传:

expo publish --release-channel <name-of-my-channel> --verbose

若日志中无字体、图标资源上传记录,需检查app.json或app.config.js的assetBundlePatterns配置,确保资源被打包工具识别:

{
  "expo": {
    "assetBundlePatterns": [
      "assets/**/*"
    ]
  }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.22 16:57:03