React Native + Xcode 9.3 iOS开发调试遇Devtools断开问题求助
嘿,我之前在类似的开发环境下也碰到过这个头疼的调试断开问题,给你分享几个亲测有效的解决办法,试试看能不能搞定:
重置缓存并重启调试服务
先关掉Chrome的Devtools,然后在终端里执行react-native start --reset-cache来清空打包缓存并重启Metro服务。接着关闭iOS模拟器,重新通过Xcode启动项目,之后再重新打开Devtools尝试连接。这一步能解决大部分因为缓存或服务异常导致的连接问题。检查Xcode的调试配置
打开Xcode进入项目的Build Settings,找到Debug Information Format选项,确保它设置为DWARF with dSYM File;另外在Scheme的Run配置面板里,确认Debug Executable是勾选状态——有时候这个选项被误关会直接导致调试链路异常。调整Chrome Devtools的实验性设置
打开Chrome Devtools后,点击右上角的三个点进入设置,切换到Experiments标签,勾选Enable React DevTools integration和Disable cache (while DevTools is open)这两个选项,然后重启Devtools。浏览器的缓存或未启用的React集成经常会干扰调试连接。排查端口占用问题
React Native默认使用8081端口进行调试,这个端口很容易被其他程序占用。在终端运行lsof -i :8081查看占用该端口的进程,找到对应的PID后用kill -9 [PID]强制终止进程,之后重启Metro服务即可。尝试无痕窗口连接调试
在模拟器里通过Command+D打开开发者菜单,选择Debug JS Remotely时,不要用常规的Chrome窗口,试试新开一个无痕窗口来加载调试页面。浏览器的插件、历史缓存有时候会莫名干扰Devtools和RN应用的连接。
如果以上方法都不行,可能是Xcode9.3和你当前使用的React Native版本存在兼容性问题——毕竟Xcode9.3是比较旧的版本了。如果开发环境允许的话,可以尝试降级React Native到和Xcode9.3匹配的版本(比如0.5x系列),或者升级Xcode到更稳定的新版本。
内容的提问来源于stack exchange,提问作者Lalit Dhiman

