使用 Yarn 2 / Yarn PnP 时如何调试 Jest 测试

Cam*_*ick 5 jestjs yarnpkg-v2

我想使用之前的答案笑话文档node --debug-brk中描述的功能在基于 npm/yarn 1 的项目中进行调试,但在基于 Yarn 2 / PnP(即插即用)的项目中不存在,因此这些指令不会为我工作。node_modules/

访问yarn 2中的二进制文件的常用方法是yarn run --inspect-brk jest --runInBand从终端启动调试会话,但是当通过连接到Chrome的远程目标检查器时chrome://inspect,我们收到一条错误消息,提示无法连接到jest.js二进制文件,因为它是一个路径到一个.zip文件。

Uncaught Error: Cannot find module '/Users/MY_USERNAME/PATH_TO_MY_PROJECT/.yarn/cache/jest-npm-24.9.0-8ddb425e99-2.zip/node_modules/jest/bin/jest.js
Run Code Online (Sandbox Code Playgroud)

在不降级到 Yarn 1 的情况下,有哪些解决方法可用?

Kon*_*kus 6

{
  "version": "0.2.0",
  "configurations": [
    {
      "type": "node",
      "request": "launch",
      "name": "Jest",
      "skipFiles": ["<node_internals>/**"],
      "cwd": "${workspaceFolder}",
      "runtimeExecutable": "yarn",
      "runtimeArgs": ["run", "--inspect-brk", "jest"],
      "console": "integratedTerminal",
      "internalConsoleOptions": "neverOpen",
      "port": 9229
    }
  ]
}
Run Code Online (Sandbox Code Playgroud)


Cam*_*ick 5

更新:下面报告的解决方法对于 Node12.15及以下版本是必要的。之后12.16.1,可以直接使用以下命令:

yarn run --inspect-brk jest --runInBand
Run Code Online (Sandbox Code Playgroud)

添加到节点 12.16.1 的修复程序位于此处

旧版本 Node、12.15 及更低版本的存档答案

一种选择是yarn unplug在使用之前使用yarn run

   yarn unplug jest
Run Code Online (Sandbox Code Playgroud)

之后,以下内容适用于 Yarn 2 和 Chrome 中的 Jest chrome://inspect

   yarn unplug jest
Run Code Online (Sandbox Code Playgroud)

unplug这种方法的一个缺点是,您可能需要在检查分支之前撤消,因为它被描述为短期措施,而不是留下依赖关系的长期状态。