Как отлаживать Jest-тесты при использовании Yarn 2 / Yarn PnP

Я бы хотел использовать node --debug-brkфункция, описанная в предыдущем ответе, и шутливые документы для отладки в проектах на основе npm / yarn 1, ноnode_modules/это нет в нити 2 / PnP (Plug N Play) проектов на основе, так что эти инструкции не будут работать для меня.

Обычный способ доступа к двоичному файлу в пряжи 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

Какие обходные пути доступны без перехода на Yarn 1?

3 ответа

{
  "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
    }
  ]
}

Обновление: описанный ниже обходной путь необходим для Node 12.15и ниже. После12.16.1, вы можете напрямую использовать следующую команду:

yarn run --inspect-brk jest --runInBand

Исправление, которое было добавлено в пряжу 12.16.1, здесь.

Заархивированный ответ для более старых версий Node, 12.15 и ниже

Один из вариантов - использовать yarn unplug Перед использованием yarn run

   yarn unplug jest

После этого с Jest in Yarn 2 и Chrome работает следующее: chrome://inspect:

   yarn run --inspect-brk jest --runInBand # any additional jest args

Обратной стороной этого подхода является то, что вам может потребоваться отменить unplugперед проверкой в ​​своей ветке, поскольку это описывается как краткосрочная мера, а не как долгосрочное состояние, в котором нужно оставить зависимость.

Вы также можете использовать yarn binкоманда, чтобы выполнить это. Я смог запустить наши шуточные тесты, используя node и некоторые помощники флагов отладки (в контексте Yarn pnp), используя эту команду:

      yarn node --inspect-brk --expose-gc $(yarn bin jest) test --runInBand --silent --logHeapUsage

Кредит - найдено решение, опубликованное в этой ветке проблем с шутками .

Другие вопросы по тегам