Vscode和webstorm在运行Jest测试时异步断点不准确的问题
一直以来被动一个问题困扰,在开发react-native应用时,无论是在Vscode或webstorm在运行Jest测试时均无法在async和yield函数中成功打断点,断点总是在函数头部就停下来,无法停在await或yield上面,如此单步调试的体验极差。
虽然知道是sourceMap的问题,但是所有该配置参数均配置了,但是还是毫无效果。
并且搜索了好久均没有找到解决问题的办法。
经过折腾,终于发现问题所在,特此记录下.
- 首先确认是
sourceMap
的问题,由于经过babel
转码,所有需要配置生成sourcemap
。
// babel.config.js
sourceMaps:"both",
retainLines: true
配置此文件的目的是生成
sourcemap
,就两个参数折腾了好几种组合,就TMD无效,实在郁闷。但是如果配置肯定是没有问题,但是就不无法打断开,说明
sourcemap
有问题,但是问题出在哪里?- 接下检查jest配置
发现在package.json
里面有这样一个配置项
// package.json { jest:{ "presets":"react-native", "setupFiles": [ "./node_modules/react-native-gesture-handler/jestSetup.js" ] } }
上面的意思是jest
在转码时启用了react-native
预设,该预设应该是配置了一些babel的相关参数来进行转码。
module.exports = {
presets: ["module:metro-react-native-babel-preset"],
}
难道是
"module:metro-react-native-babel-preset"
和"react-native"
冲突?好象从道理上也是说得通的,不同的预设的差异导致生成的
sourcemap
不正常,从而无法进行有效的断点定位。因此,尝试将
package.json
里面的"presets":"react-native"
删除了。果然,断点调试恢复正常了,这说明对问题的分析应该是正确的。
【Vscode和webstorm在运行Jest测试时异步断点不准确的问题】这个问题只在时行jest单元测试时出错,所以网上也没有找到解决方案,最终一个困扰好久的问题总算得到解决。
推荐阅读
- 急于表达——往往欲速则不达
- 第三节|第三节 快乐和幸福(12)
- 20170612时间和注意力开销记录
- 2.6|2.6 Photoshop操作步骤的撤消和重做 [Ps教程]
- 对称加密和非对称加密的区别
- 眼光要放高远
- 樱花雨
- 前任
- 2020-04-07vue中Axios的封装和API接口的管理
- 烦恼和幸福