Expo SDK 53升级后iOS Expo Go运行异常及相关技术问题求助
Expo SDK 53升级后iOS Expo Go运行异常及相关技术问题求助
Hey 各位开发者朋友,最近我在基于Expo SDK 53开发React Native应用时,遇到了两个头疼的问题,折腾了好一阵,给大家梳理下问题和我摸索出来的解决思路,也求各位大佬帮忙补充:
一、路由错误:Component auth has not been registered yet
这个问题特别奇怪:Web端运行完全正常,但在iOS的Expo Go里一启动就报这个错,排查下来大概是这几个原因,你可以逐一排查:
- 先核对你的路由配置:不管用的是Expo Router还是React Navigation,检查有没有代码里调用了
navigation.navigate('auth')或者配置了/auth路径,但对应的屏幕组件根本没注册?比如是不是漏了在导航栈里import Auth组件并添加到屏幕列表中? - 注意文件名大小写问题:iOS的文件系统是大小写敏感的,Web端可能对
Auth.js和auth.js不区分,但Expo Go在iOS上会认死理,如果你路由里写的是小写的auth,但实际文件名是大写开头的Auth.js,就会报这个找不到组件的错 - 清Expo Go缓存试试:在iOS上打开Expo Go,长按你的项目图标,选择「Clear Cache」,然后重新扫码加载项目,有时候旧的路由配置缓存会搞鬼
- 如果你用了组件懒加载:比如
React.lazy(() => import('../screens/Auth')),Expo Go在iOS上可能对异步加载的组件注册时机有问题,先改成同步引入组件,看能不能解决,排除这个因素
二、推送通知警告:remote push notifications are not supported in Expo Go with SDK 53
这个我特意查了官方的更新说明,确实是SDK 53的调整,给你两个可行的应对方案:
- 做自定义开发构建:这是目前测试远程推送的唯一靠谱方式,步骤也不复杂:
- 确保你有苹果开发者账号(免费个人账号也能用于开发测试)
- 运行
expo prebuild --clean生成iOS原生项目文件 - 执行
expo run:ios,在模拟器或真机上安装自定义的开发客户端,之后在这个客户端里运行项目,就能正常测试远程推送了
- 临时用本地通知模拟:如果暂时不想折腾开发构建,可以用
expo-notifications的scheduleNotificationAsync方法创建本地通知,先把通知的展示、点击逻辑调试好,等后续再切换到远程推送的测试 - 另外要提醒下:哪怕做了开发构建,也得在苹果开发者后台配置好推送证书(APNs证书),不然还是收不到远程推送,这个步骤别漏了
以上都是我实际踩坑后总结的经验,希望能帮到你,要是有其他细节问题咱们再一起讨论~
内容来源于stack exchange
相关产品推荐
相关产品推荐

