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

Expo/React Native eject到bare工作流后XCode构建找不到图片文件

问题原因

你遇到的报错是因为直接通过Xcode构建时,没有触发Expo默认的静态资源打包流程:expo run:ios -d命令执行时会自动完成资源导出、JS打包的前置步骤,直接打开Xcode运行会跳过这部分逻辑,导致静态图片没有被打包到原生项目中,也就找不到对应目录。

你当前的图片导入写法是符合Expo规范的,不需要调整路径指定方式。

修复方案
  • 方法一:手动执行一次资源打包命令
    在项目根目录执行以下命令,将所有静态资源和JS bundle导出到iOS原生项目目录:

    npx expo export:embed --platform ios --entry-file index.js --bundle-output ./ios/main.jsbundle --assets-dest ./ios
    

    执行完成后再用Xcode构建即可正常加载图片。

  • 方法二:调整Xcode构建阶段配置
    打开Xcode中的iOS项目,选中项目target,进入「Build Phases」标签,确认存在「Bundle React Native code and images」构建阶段,且脚本内容包含以下逻辑:

    set -e
    WITH_ENVIRONMENT="../node_modules/react-native/scripts/xcode/with-environment.sh"
    REACT_NATIVE_XCODE="../node_modules/react-native/scripts/react-native-xcode.sh"
    EXPO_XCODE="../node_modules/expo-modules-autolinking/scripts/ios/xcode_env.sh"
    /bin/sh -c "$EXPO_XCODE && $WITH_ENVIRONMENT $REACT_NATIVE_XCODE"
    

    配置完成后Xcode每次构建都会自动执行资源打包,不需要手动跑命令。

  • 方法三:开发场景下临时方案
    开发阶段可以先在终端执行npx expo start挂起Metro服务,再用Xcode构建运行,Metro会实时提供JS代码和静态资源,不需要提前打包静态文件。

  • 缓存问题修复
    如果上述操作后仍然报错,先执行清缓存操作:删除ios目录下的build文件夹,执行npx expo prebuild --clean重新生成原生项目,再走上面的打包步骤即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 02:45:03