Ionic 5配合Capacitor使用livereload功能,代码变更重编译后iOS模拟器白屏
Ionic 5 + Capacitor livereload 代码变更后白屏问题解决方案
问题属性说明
该故障不属于Ionic 5搭配Capacitor的通用已知Bug,核心诱因多为配置冲突、livereload服务映射异常、资源加载路径不匹配三类。
排查&解决步骤
- 指定livereload host匹配配置:你当前Capacitor配置中cordova偏好设置的hostname为
localhost,但livereload默认会启用局域网IP作为服务地址,跨host导致资源被webview拦截卡白屏,执行启动命令时追加host参数即可:ionic capacitor run ios -l --host=localhost - 测试scheme兼容性:当前配置自定义scheme为
app,部分旧版本Capacitor 2.x系列和Ionic 5搭配时,livereload的http协议和自定义scheme存在拦截冲突,可临时将cordova.preferences.scheme改为http验证是否为该原因导致 - 清除旧缓存重新同步:依次执行
ionic build> 删除Xcode对应项目的DerivedData缓存 > 执行npx cap sync ios,再启动livereload,排除旧编译产物的干扰 - 开启Safari调试定位具体错误:模拟器启动应用后,打开Mac端Safari的「开发」菜单,选中对应模拟器的webview实例,代码变更后查看控制台的报错信息,可直接定位是跨域、资源404还是JS运行时错误导致的白屏
- 验证bundledWebRuntime配置影响:你当前配置
bundledWebRuntime: false,若本地开发服务器的资源路径和打包后的www目录路径规则不一致,会导致热更新后资源加载失败,可临时将该参数改为true测试是否恢复正常
内容的提问来源于stack exchange,提问作者Lorenzo Varano
相关产品推荐
相关产品推荐

