iOS应用因JS Bundle与Expo入口点问题卡在启动页
iOS应用因JS Bundle与Expo入口点问题卡在启动页
嘿,我太懂这种踩坑的感觉了!用Expo Router的bare workflow搞iOS release的时候,经常会因为JS Bundle没正确生成或者配置不对,导致TestFlight上的App卡在启动页。咱们一步步来排查解决:
1. 先把你的bundle命令补全并修正
你提到的命令里entry-file写的是“i”,应该是输入到一半没写完吧?针对用Expo Router的bare项目,正确的打包命令应该是这样的:
npx react-native bundle \ --entry-file index.js \ --platform ios \ --dev false \ --bundle-output ios/main.jsbundle \ --assets-dest ios
这里要确认你的index.js里有没有导入Expo Router的入口代码——正常来说eject后的项目,index.js里应该有这么一行:import 'expo-router/entry';,这是Expo Router能正常启动的关键,要是没这行,bundle生成了也没用。
2. 检查Xcode里的Build Phases配置
- 先确认
main.jsbundle和生成的assets文件夹已经正确添加到Xcode项目里:右键你的项目 -> Add Files to [项目名],选择ios目录下的main.jsbundle和assets文件夹,勾选「Copy items if needed」,还要确保Target membership选对了你的主App target。 - 然后看「Bundle React Native code and images」这个脚本,Expo ejected的项目有时候这个脚本会有问题,你可以把它改成标准的bare项目脚本:
export NODE_BINARY=node ../node_modules/react-native/scripts/react-native-xcode.sh
如果不想手动生成bundle,也可以让这个脚本自动帮你生成,但要确保脚本执行时能找到正确的入口文件。
3. 核对Expo配置文件的入口设置
打开你的app.json或者app.config.js,检查expo.entryPoint字段是不是和你实际的入口文件对应,比如你用的是index.js,那这里应该设为"./index.js",别写错路径。
4. 清理缓存,重新构建
缓存问题经常是罪魁祸首,按顺序来:
- Xcode里选Product -> Clean Build Folder,再去Preferences -> Locations里找到Derived Data的路径,删掉整个文件夹;
- 终端里执行
npx react-native start --reset-cache清理React Native缓存; - 重新用正确的命令生成bundle,然后再去Xcode里Archive项目。
5. 本地先测Release模式
别着急上传TestFlight,先在本地跑Release模式调试:
- Xcode里选Product -> Scheme -> Edit Scheme,把Run的Build Configuration改成Release,然后运行到模拟器或者真机上;
- 打开Xcode的控制台,看看有没有报错——比如找不到bundle文件、入口错误、路由配置问题,这些在Release模式下不会像开发模式那样弹出提示,只会卡在启动页。
备注:内容来源于stack exchange,提问作者Sana Fatima
相关产品推荐
相关产品推荐

