React Native 真机断点调试+跨域资源加载出错问题的解决方法


Posted in Javascript onJanuary 18, 2018

写在前面

闲来无事,折腾了一下React Native,相比之前,开发体验好了不少。但在真机断点调试那里遇到了跨域资源加载出错的问题,一番探索总算解决,目测是RN新版本调试服务的bug。

遇到类似问题的同学应该不少,这里做下记录,有需要的可以参考下。

如何断点调试

首先,在真机上加载运行RN应用(过程略)。

然后,摇动手机,弹出开发菜单,选择“Debug JS Remotely”。

React Native 真机断点调试+跨域资源加载出错问题的解决方法

chrome会自动打开调试界面,地址是 http://localhost:8081/debugger-ui/ 。打开控制台,找到想要调试的文件,加断点,搞定。

React Native 真机断点调试+跨域资源加载出错问题的解决方法

问题:跨域资源加载出错

理想情况下,上述步骤后,就可以愉快地断点调试了。但实际情况并没有这么顺利,按照 官方指引 修改了host后,问题依然存在。

在控制台看到的错误信息如图所示,跨域资源加载出错。192.168.3.126 是本机内网的ip,而出错资源的域名是 192.168.3.126.xip.io。

React Native 真机断点调试+跨域资源加载出错问题的解决方法

在未对RN有深入了解的情况下,想到两种思路,后文会分别讲述细节。

让加载出错的资源,跟调试页面变成同源的

让调试服务支持资源跨域加载

解决方法一:替换主机名

将localhost替换成192.168.3.126.xip.io,也就是说,我们通过http://192.168.3.126.xip.io:8081/debugger-ui/ 来访问调试界面。

调试界面正常访问,资源加载正常,done。

React Native 真机断点调试+跨域资源加载出错问题的解决方法

192.168.3.126.xip.io 这个主机名看着有点奇怪,后文会进一步介绍背后的原理。

解决方法二:CORS

在github issue《CORS issue with JS Remote Debugging when using xip.io》里,有开发者反馈了同样的错误。

他是这样解决的:

找到node_modules/metro模块,修改Server/index.js、index.js.flow文件,在_processDeltaRequest方法里加上下面代码。

mres.setHeader("Access-Control-Allow-Origin", "*");

这个方法不推荐,不过如果急着调试的话也不妨试下。

192.168.3.126.xip.io是什么东东

看到这个主机名不少同学可能一脸懵逼,一个似乎不存在的主机名怎么可以访问成功。

在控制台下ping了一下返回的是 192.168.3.126 这个ip。

React Native 真机断点调试+跨域资源加载出错问题的解决方法

其实很简单,xip.io是个特殊的域名,当你查询xxx.xip.io这个域名对应的ip地址时,它会直接返回xxx。

举例:笔者笔记本的内网ip地址是 192.168.3.126,当我 访问 192.168.3.126.xip.io,DNS查询返回的ip地址就是 192.168.3.126。

它的原理也很简单,xip.io 的持有者在公网自建了DNS解析服务,当用户发起 xxx.xip.io 的DNS查询时,它会直接把 xxx 返回。

写在后面

前面提到的跨域解决方案,其实都不尽如人意,如有更好的方案,请告诉笔者,谢谢。

参考链接

http://xip.io/

CORS issue with JS Remote Debugging when using xip.io

Debugging on a device with Chrome Developer Tools

以上这篇React Native 真机断点调试+跨域资源加载出错问题的解决方法就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
不同浏览器对回车提交表单的处理办法
Feb 13 Javascript
网页加载时页面显示进度条加载完成之后显示网页内容
Dec 23 Javascript
解析使用js判断只能输入数字、字母等验证的方法(总结)
May 14 Javascript
Javascript基础 函数“重载” 详细介绍
Oct 25 Javascript
完美解决IE低版本不支持call与apply的问题
Dec 05 Javascript
JavaScript实现班级随机点名小应用需求的具体分析
May 12 Javascript
Vuejs 页面的区域化与组件封装的实现
Sep 11 Javascript
详解webpack提取第三方库的正确姿势
Dec 22 Javascript
用Axios Element实现全局的请求loading的方法
Mar 15 Javascript
使用pm2部署node生产环境的方法步骤
Mar 09 Javascript
javascript设计模式 ? 状态模式原理与用法实例分析
Apr 22 Javascript
微信小程序调用wx.getImageInfo遇到的坑解决
May 31 Javascript
ajax请求data遇到的问题分析
Jan 18 #Javascript
angular.js和vue.js中实现函数去抖示例(debounce)
Jan 18 #Javascript
vue-scroller记录滚动位置的示例代码
Jan 17 #Javascript
基于vue监听滚动事件实现锚点链接平滑滚动的方法
Jan 17 #Javascript
详解微信小程序审核不通过的解决方法
Jan 17 #Javascript
swiper动态改变滑动内容的实现方法
Jan 17 #Javascript
基于 Vue.js 2.0 酷炫自适应背景视频登录页面实现方式
Jan 17 #Javascript
You might like
一个简单php扩展介绍与开发教程
2010/08/19 PHP
ThinkPHP+EasyUI之ComboTree中的会计科目树形菜单实现方法
2017/06/09 PHP
php 使用 __call实现重载功能示例
2019/11/18 PHP
javascript 在网页中的运用(asp.net)
2009/11/23 Javascript
Extjs入门之动态加载树代码
2010/04/09 Javascript
jquery 单击li防止重复加载的实现代码
2010/12/24 Javascript
jquery随意添加移除html的实现代码
2011/06/21 Javascript
CodeMirror2 IE7/IE8 下面未知运行时错误的解决方法
2012/03/29 Javascript
javascript获取函数名称、函数参数、对象属性名称的代码实例
2014/04/12 Javascript
jQuery中多个元素的Hover事件解决方案
2014/06/12 Javascript
检测一个函数是否是JavaScript原生函数的小技巧
2015/03/13 Javascript
javascript实现textarea中tab键的缩排处理方法
2015/06/26 Javascript
详解Angular2中的编程对象Observable
2016/09/17 Javascript
JS触摸屏网页版仿app弹窗型滚动列表选择器/日期选择器
2016/10/30 Javascript
详解JavaScript中数组的reduce方法
2016/12/02 Javascript
bootstrap警告框使用方法解析
2017/01/13 Javascript
ES6新特性五:Set与Map的数据结构实例分析
2017/04/21 Javascript
Angular4学习笔记之实现绑定和分包
2017/08/01 Javascript
详解开源的JavaScript插件化框架MinimaJS
2017/10/26 Javascript
浅谈vue-router 路由传参的方法
2017/12/27 Javascript
vue-router配合ElementUI实现导航的实例
2018/02/11 Javascript
关于vue项目中搜索节流的实现代码
2019/09/17 Javascript
Vue 实例事件简单示例
2019/09/19 Javascript
vue 实现cli3.0中使用proxy进行代理转发
2019/10/30 Javascript
JavaScript遍历数组的方法代码实例
2020/01/14 Javascript
深入浅析ImageMagick命令执行漏洞
2016/10/11 Python
Pycharm学习教程(5) Python快捷键相关设置
2017/05/03 Python
会计系毕业个人自荐信格式
2013/09/23 职场文书
学生会竞选自荐信
2013/10/12 职场文书
统计学专业毕业生的自我评价分享
2013/11/28 职场文书
高中军训感言400字
2014/02/24 职场文书
党员承诺书格式
2014/05/21 职场文书
5s标语大全
2014/06/23 职场文书
员工三分钟演讲稿
2014/08/19 职场文书
销售内勤岗位职责范本
2015/04/13 职场文书
2016党校培训心得体会
2016/01/07 职场文书