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
相关产品推荐
相关产品推荐

