typescript 使用expose-gc从CRA应用程序中的节点运行Jest

4ioopgfo  于 2022-12-14  发布在  TypeScript
关注(0)|答案(1)|浏览(201)

我遇到了内存泄漏问题,这是由于使用Jest运行我的测试套件,其中内存使用量随着每个套件的增长而不断增加。
在网上搜索之后,我发现这可能与垃圾收集器行为有关,多个Github线程建议运行以下命令:
node --expose-gc ./node_modules/jest/bin/jest.js --coverage --runInBand --logHeapUsage
问题是我的项目使用React(CRA未弹出)和Typescript,因此每当我运行此脚本时,它都会因为Typescript而抛出Syntax error
我试过安装ts-jest库,但它不起作用。这可能是相关的,但运行ts-jestsetup init 抱怨由于CRA已经有了一个配置。
我一直在搜索,但我没有找到任何东西,因为所有相关的线程都是关于Jest已知的内存泄漏,但没有一个线程解释如何在一个带有React和Typescript的项目中使用expose-gc执行node命令。

  • 是否有任何方法可以将GC公开给CRA使用的Jest脚本,以便我可以继续使用到目前为止的相同配置?
  • 否则,我如何执行node --expose-gc jest解析我的文件,使它不抛出错误?
  • 我还需要使用--inspect-brk来查看漏洞来自何处,因此即使--detect-leaks可以工作,我仍然需要找到一种方法来执行Jest config from node命令。

谢谢你,谢谢你

jum4pzuy

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脚本本身)。
希望这对将来的某个人有帮助!

相关问题