方式一  chrome devtools的方式

第一步:metro的方式加载bundle

先设置好原生这边的代码,然后记得打开RN服务器。

注意这个enableDebugger的值一定要设置为true

第二步:配置devtools调试端口号

打开chorome,输入chrome://inspect,会进入devtools的调试设置页面:

点击页面上的configure按钮,进行端口号的设置,如下图。

具体设置方式为:host默认localhost,后面端口是重点,如果你RN服务端开的是8081就是8081,你开的是8082就是8082。多配置是不要紧的,不要配错了就行。配置完上方的端口号,记得勾选左下角的Enable port forwarding,最后点击done即可。

按照上面这个顺序,依次配置完,点击完done后,等待大概5秒,会出现这个页面:

此时你会看到Remoto Target里面有了一个target,名叫Hermes React Native,点击这个target里面的inspect链接。

注意:这一块偶尔会自动消失,如果消失了,就要杀死APP重启,然后重新加载成功bundle。再去命令行里面按一下d键,等手机上出现reload以后,按一下刷新页面。刷新完等个大概5秒就出来了。

第三步:添加RN那边的JS源码

点击Sources > Workspace选项卡,点击Add folder按钮,在弹出来的资源选择器中选择当前项目的源文件然后点击选择文件夹按钮,如图:

问题解析

问题一:Failed to fetch source url xxx remote fetches not permitted

解决方案:这个问题可能是RN服务端被挂起了,重启手机,关闭命令行,然后clean一下项目,按照之前启动RN服务端的步骤重新来一遍,不报错了。

问题二:在chrome左边栏打断点并不生效

如果直接在chorome的左边栏打断点,进程并不会阻塞住。但是大家看我的Log已经在控制台打出来了,这说明该行代码其实已经执行过了。

解决方案:在开发安卓IOS的时候,直接在chrome左边栏打上断点就可以了。但是鸿蒙这里目前可能是不支持,需要使用在代码中加debugger的方式

如果仍然不生效,需要杀死APP重新加载一下bundle。然后关闭chrome调试的网页,重进一下,最终断点成功:

方式二  flipper的方式

第一步:下载flipper

flipper是一个三方工具,需要手动下载一下。下载链接为:https://github.com/facebook/flipper/releases/download/v0.171.1/Flipper-win.zip

进不去网页的家人们,记得用4G流量去下载即可。

第二步:配置flipper环境变量

下载完要先配置一下环境变量,配置的路径是有flipper.exe的那个

配置完以后,如果你此时打开flipper:

映入眼帘的是一个报错,无视即可不影响调试。

还有一种快速打开flipper的方式,你到RN服务端按一下D键,弹窗调试菜单,选择openDebugger,就会自动打开flipper。

第三步:进入flipper模式

点击一下Hermes Debugger(RN),进入鸿蒙调试模式

这里左上角报了一个NO APPLICATION SELECTED,不用管,不影响调试。

第四步:Flipper中打开RN代码

点击完左边的Hermes Debugger(RN)后,到右边点一下源代码选项卡。

随后按Ctrl + P(macox上command + P),然后输入你要调试的文件名,选择文件即可打开源代码

第五步:制造断点

和chrome调试不一样的地方是,这个Flipper在你要定位的行号点击即打下断点,当代码运行到此处时便会自动停下,如图所示:

当然,和chrome一样,flipper也支持在代码中写debugger的方式,在你想要断点的地方写上debugger即可,断点时会自动阻塞:

第六步:更新RN代码

当你修改完JS代码,flipper调试这里也会自动更新,前提是你得先把上一次的debug结束,点击右上角的继续执行脚本即可。

问题解析

问题一  报错NO DEVICES FOUND

解决方案:出现这个问题,大概率是RN服务器没连上,重启一下手机和RN服务器即可

问题二  Flipper连接手机失败

解决方案:如果是这个报错,说明RN服务器正常,但是手机没有连上电脑,可能是数据线松动了。检查一下USB调试是否配置,还有数据线是否松动

如何在原生鸿蒙中进行RN的断点调试的更多相关文章

  1. Xcode中使用数据(硬件)断点调试

    大熊猫猪·侯佩原创或翻译作品.欢迎转载,转载请注明出处. 如果觉得写的不好请多提意见,如果觉得不错请多多支持点赞.谢谢! hopy ;) 在Xcode的GUI界面中只能添加软断点,而无法增加硬断点.但 ...

  2. phpstorm中xdebug配置和断点调试

    今天赶紧把这个搞了  运行环境: phpStorm 2018 PHP 5.45 nts VC9 Xdebug 2.4.1 0x01 PHP安装xdebug扩展 自己之前装一直没装起 原来是版本问题 下 ...

  3. unity导出工程导入到iOS原生工程中详细步骤

    一直想抽空整理一下unity原生工程导入iOS原生工程中的详细步骤.做iOS+vuforia+unity开发这么长时间了.从最初的小小白到现在的小白.中间趟过了好多的坑.也有一些的小小收货.做一个喜欢 ...

  4. 原生JS中apply()方法的一个值得注意的用法

    今天在学习vue.js的render时,遇到需要重复构造多个同类型对象的问题,在这里发现原生JS中apply()方法的一个特殊的用法: var ary = Array.apply(null, { &q ...

  5. iOS原生项目中集成React Native

    1.本文的前提条件是,电脑上已经安装了CocoaPods,React Native相关环境. 2.使用Xcode新建一个工程.EmbedRNMeituan [图1] 3.使用CocoaPods安装Re ...

  6. 原生js中slice()方法和splice()区别

    slice()方法和splice()方法都是原生js中对数组操作的方法. slice(),返回一个新的数组,该方法可从已有的数组中返回选定的元素.例如:arrObject(start,end),sta ...

  7. ThinkPHP 中使用 IS_AJAX 判断原生 JS 中的 Ajax 出现问题

    问题: 在 ThinkPHP 中使用原生 js 发起 Ajax 请求的时候.在控制器无法使用 IS_AJAX 进行判断.而使用 jQuery 中的 ajax 是没有问题的. 在ThinkPHP中.有一 ...

  8. 原生ajax中get和post请求

    后台代码: class AjaxHanlder(tornado.web.RequestHandler): def get(self): print(self.get_argument('type',N ...

  9. angularjs 动态表单, 原生事件中调用angular方法

    1. 原生事件中调用angular方法, 比如 input的onChange事件想调用angular里面定义的方法 - onChange="angular.element(this).sco ...

  10. 如何在原生工程中引入Cordova工程-for iOS 【转】

    http://blog.csdn.net/e20914053/article/details/50170487 如今混合开发方兴未艾,有的项目可能一开始是原生开发的,后期需要加入混合开发,如将Cord ...

随机推荐

  1. CSP-S 2023

    T1 直接 \(10^{5}\) 枚举状态就过了,合法的非零差分数量只可能为 \(1,2\)(\(0\) 相当于没转,按照题意 "都不是正确密码" 是不符的) 需要注意的是形如 0 ...

  2. 墨天轮访谈 | Pika数据库陈磊:云时代下,键值数据库是否会被替代?

    分享嘉宾:陈磊 开源数据库Pika项目PMC核心人员 整理:墨天轮社区 导读 大家好,今天我分享的主题是:KV数据库,云时代的文件存储. 随着AI和机器学习等技术的发展,数据演变为了十分宝贵的资源,数 ...

  3. 点亮PC13- 使用寄存器点亮

    #include "stm32f10x.h" // Device header int main(void) { // 打卡GPIOC的时钟 RCC->APB2ENR = 0 ...

  4. 什么是SPA页面,它的优缺点?

    什么是SPA spa是单页面应用(single page web application),浏览器会一开始就加载所需要的html.css.javascript.一旦页面加载完毕,整个页面就不会因为用户 ...

  5. 如何使用 VuePress 搭建博客网站并 Vercel 部署

    先来看一下网站截图: 快速上手 1.创建并进入一个新目录 mkdir vuepress-starter && cd vuepress-starter 2.使用你喜欢的包管理器进行初始化 ...

  6. mybatis相关-转义字符串报错-Cause: org.xml.sax.SAXParseException

    mybatis相关-转义字符串报错-Cause: org.xml.sax.SAXParseException 部分报错信息 Caused by: org.springframework.beans.f ...

  7. RTCP报文解析

    RTCP包的头部结构体定义 struct RTCP_Header { unsigned short rc:5; unsigned short padding:1; unsigned short ver ...

  8. 3.18 Linux懒人神器:命令自动补全功能!

    文件名(或者目录名)是执行 linux 命令中最常见的参数,例如前面介绍的 cd.mkdir.cp 等命令,都涉及到了文件名.然而对初学者来说,输入完整的文件名感觉很麻烦,尤其面临文件名(目录名)特别 ...

  9. 基于常量值提取浅析elf文件结构

    Elf(可执行和可链接文件)是一个永远也绕不开的话题,只要我们还在使用安卓手机/linux服务器,我们就需要了解elf的一些方方面面,现在就让我们从一个常量值提取的小需求出发,逐步解析elf文件结构吧 ...

  10. 关于CP2102(USB转TTL模块)的驱动安装、电脑识别、接线

    一.CP2102 与 CH340 对比 特性 CP2102 CH340 芯片制造商 Silicon Labs WCH(江苏沁恒) 接口 USB USB 最大波特率 1 Mbps 2 Mbps 支持操作 ...