我遇到了内存泄漏问题,这是由于使用Jest运行我的测试套件,其中内存使用量随着每个套件的增长而不断增加。
在网上搜索之后,我发现这可能与垃圾收集器行为有关,多个Github线程建议运行以下命令:node --expose-gc ./node_modules/jest/bin/jest.js --coverage --runInBand --logHeapUsage
问题是我的项目使用React(CRA未弹出)和Typescript,因此每当我运行此脚本时,它都会因为Typescript而抛出Syntax error
。
我试过安装ts-jest
库,但它不起作用。这可能是相关的,但运行ts-jest
setup init 抱怨由于CRA已经有了一个配置。
我一直在搜索,但我没有找到任何东西,因为所有相关的线程都是关于Jest已知的内存泄漏,但没有一个线程解释如何在一个带有React和Typescript的项目中使用expose-gc
执行node
命令。
- 是否有任何方法可以将GC公开给CRA使用的Jest脚本,以便我可以继续使用到目前为止的相同配置?
- 否则,我如何执行
node --expose-gc jest
解析我的文件,使它不抛出错误? - 我还需要使用
--inspect-brk
来查看漏洞来自何处,因此即使--detect-leaks
可以工作,我仍然需要找到一种方法来执行Jest config fromnode
命令。
谢谢你,谢谢你
1条答案
按热度按时间jum4pzuy1#
在阅读了Jest的文档之后,我看到了这一节,它建议在VS代码中调用
react-scripts
来运行调试配置。node --inspect-brk node_modules/react-scripts/scripts/test.js --no-cache --env=jsdom --runInBand
正如您所看到的,您必须直接调用
react-scripts
中的test.js
文件,然后您可以将您想要的所有参数发送到Jest,就像您通常在直接从项目终端运行测试时所做的那样。如果执行此脚本:
node --inspect-brk node_modules/react-scripts/bin/react-scripts.js test --no-cache --env=jsdom --runInBand
您将能够连接到节点调试器,但不能在测试文件中设置
debugger
停止,因为它将连接到主进程,即react-scripts
(而不是test
脚本本身)。希望这对将来的某个人有帮助!