React Native iOS Release模式本地图片不显示问题求助
React Native Release模式本地图片加载失败解决方案(React 17.0.2 + RN 0.67.4 + Xcode 14.x)
检查路径大小写
Release模式对文件路径大小写严格,Debug模式会忽略差异。比如实际文件是logo.png,就别写成Logo.png,确保require里的路径和文件系统完全一致。确认Xcode资源配置
- 右键Xcode项目目录,选Add Files to "[项目名]",选中图片所在文件夹,勾选Copy items if needed,选Create groups(别选Create folder references)。
- 进入Build Phases → Copy Bundle Resources,检查图片/资源文件夹是否在列表里,没有的话点+号手动添加。
清理缓存重构建
- 清RN缓存:执行
npx react-native start --reset-cache - 清Xcode缓存:点击Xcode顶部Product → Clean Build Folder(快捷键Cmd+Shift+K),再手动删除Derived Data(路径在Xcode偏好设置→Locations里)
- 重新打包JS bundle:执行
npx react-native bundle --platform ios --dev false --entry-file index.js --bundle-output ios/main.jsbundle --assets-dest ios,之后用Xcode构建Release版本。
- 清RN缓存:执行
检查metro.config.js配置
确保metro能识别图片格式,在配置里补充assetExts:const {getDefaultConfig, mergeConfig} = require('@react-native/metro-config'); const config = {}; module.exports = mergeConfig(getDefaultConfig(__dirname), { resolver: { assetExts: [...getDefaultConfig(__dirname).resolver.assetExts, 'png', 'jpg', 'jpeg', 'gif'], }, });避免动态require路径
别用require(./assets/${name}.png)这种动态拼接的写法,Release模式下metro没法静态解析,必须写死完整路径,比如require('./assets/logo.png')。
内容的提问来源于stack exchange,提问作者Ragu Ram
相关产品推荐
相关产品推荐

