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

Expo/React Native本地图片加载故障求助:require引入图片无法显示

解决Expo/React Native本地图片require()加载失效问题

针对你遇到的本地图片加载失效、远程图片正常,且团队其他成员无此问题的情况,可尝试以下针对性方案:

  • 深层清理Expo与Metro缓存
    除了常规的expo r -c,手动删除本地Expo缓存目录:

    • Mac/Linux:rm -rf ~/.expo/cache
    • Windows:删除%USERPROFILE%\.expo\cache文件夹
      同时删除项目根目录下的.expo文件夹,再重启Metro Bundler。
  • 确认图片引入的静态语法
    确保require()的路径是静态字符串,避免动态拼接(如require(./assets/${name}.png))。Expo的资源打包机制对动态路径支持有限,需改为静态导入:

    // 正确写法
    <Image source={require('./assets/avatar.png')} />
    
  • 校验Expo CLI与SDK版本一致性
    运行expo --version查看本地CLI版本,与团队成员对比。若版本不一致,降级到统一版本:

    npm install -g expo-cli@[团队使用的版本号]
    

    同时检查项目package.json中expo依赖的版本,确保与CLI匹配。

  • 查看Metro Bundler的详细日志
    启动项目后,在Metro的终端窗口中搜索图片相关的报错信息(如Asset not found、Failed to resolve module),这些日志能直接定位具体的加载失败原因。

  • 重置Expo Go应用版本
    若使用Expo Go测试,卸载当前设备上的Expo Go,重新下载与项目SDK版本匹配的官方版本,避免版本不兼容导致的资源加载异常。

  • 检查本地文件系统的实际状态
    用终端命令(如ls assets/)查看assets文件夹下的实际文件,确认图片文件存在、文件名无特殊字符(空格、中文、特殊符号),且路径与代码中的引入完全一致(注意大小写敏感,Mac/Linux系统区分文件名大小写)。

  • 强制刷新资源打包配置
    在app.json中临时将assetBundlePatterns改为["**/*"](匹配所有资源),然后运行:

    expo prebuild --clean  # 仅适用于bare workflow项目
    

    或执行expo export --clear后重启项目,确保资源打包规则生效。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 11:49:58