#debugging #react-native #babeljs #visual-studio-code #jestjs
#отладка #react-native #babeljs #visual-studio-code #jestjs
Вопрос:
Я пишу приложение с использованием react native и хочу иметь возможность тестировать свой код с помощью jest framework и использовать отладчик visual studio code editor для установки точек останова. Проблема, с которой я сталкиваюсь в настоящее время, заключается в том, что независимо от того, как я запускаю отладчик, будь то создание нового экземпляра или его подключение, я не могу заставить исходные карты работать из babel. Я пробовал различные конфигурации в файле .babelrc, но, похоже, ни одна из них не работает.
Версия VSCode — 1.6.0 (последняя версия)
Моя структура каталогов похожа на это
-package.json
-node_modules
-.babelrc
-dist
-app
-myModule.js
-test
-myModule.spec.js
затем в my .babelrc у меня есть следующее
{
"presets" : ["react-native"],
"sourceMaps" : true,
"outDir" : "./dist"
}
Я попытался установить значение sourceMaps
prop для обоих true
, inline
и оба не работали с текущей launch.json
конфигурацией.
Вот мой launch.json
способ запуска тестера Jest
{
"name" : "Launch via jest",
"type": "node",
"request": "launch",
"program" : "${workspaceRoot}/node_modules/jest/bin/jest.js",
"cwd": "${workspaceRoot}",
"args": [
"--runInBand"
],
"runtimeArgs": [
"--harmony"
],
"sourceMaps": true,
"outDir" : "${workspaceRoot}/dist"
}
Оба --harmony
и --runInBand
необходимы для правильной работы отладчика, поскольку Jest породит дочерний процесс, который конфликтует с портами.
У меня также есть дополнительная конфигурация Jest в моем package.json
"jest": {
"preset": "jest-react-native"
}
Теперь всякий раз, когда я запускаю отладчик, он запускается и останавливается на точках останова вывода babel вместо исходного источника, что не очень помогает. Я должен также упомянуть, что сам тест скомпилирован babel, и я не уверен, имеет ли это значение.
Любые указатели или различные конфигурации приветствуются.
Комментарии:
1. вы нашли решение за это время?
Ответ №1:
Параметр .babelrc является sourceMap
единственным. { "sourceMap" : "inline" }
работает для меня.
Комментарии:
1. У меня тоже работает.
Ответ №2:
Я смог получить правильную исходную карту VS Code и размещение точек останова в исходных файлах вместо переноса для работы с Jest Babel с помощью:
-
Чтобы убедиться, что Babel генерирует исходные карты, для этого нужно установить sourceMap в положение inline в
babel
разделе mypackage.json
(возможно, вам придется сделать это в your.babelrc.json
вместо этого). -
В моем
launch.json
файле VS Code я заменил debugger сnode
наpwa-node
. Это позволило мне указатьresolveSourceMapLocations
свойство и указать VS Code, что исходные файлы находятся в моем каталоге рабочей области. Я думаю, что это необходимо из-за того, что Jest создает файлы в своем собственном кэше.
Моя полная lunch.json
конфигурация:
{
// Use IntelliSense to learn about possible attributes.
// Hover to view descriptions of existing attributes.
// For more information, visit: https://go.microsoft.com/fwlink/?linkid=830387
"version": "0.2.0",
"configurations": [
{
"type": "pwa-node",
"request": "launch",
"name": "vscode-jest-tests",
"program": "${workspaceRoot}/node_modules/jest/bin/jest.js",
"args": [
"--no-cache",
"--config",
"${workspaceRoot}/jest.config.json",
"--runInBand",
"--detectOpenHandles"
],
"internalConsoleOptions": "neverOpen",
"outFiles": [
"${workspaceRoot}/dist/**/*"
],
"env": {
"NODE_ENV": "test"
},
"runtimeArgs": [
"--nolazy"
],
"console": "integratedTerminal",
"sourceMaps": true,
"smartStep": true,
"skipFiles": [
"<node_internals>/**",
"node_modules/**"
],
"resolveSourceMapLocations": [
"${workspaceFolder}/**",
"!**/node_modules/**"
],
}
]
}
Я использую VS Code 1.53, Jest 25.5.4
Ответ №3:
Какова ваша конфигурация jest? Я видел странный вывод, связанный с покрытием, пока не добавил следующее значение конфигурации:
"testRegex": "src/.*\.test\.js$"