34 votes

Jest + Babel dans le débogueur de VS Code provoque le déplacement des points d'arrêt

J'essaie de déboguer un projet simple en utilisant babel, jest, et du code vs. Lorsque je fixe un point d'arrêt et que je commence à déboguer, mes points d'arrêt sautent et ne sont plus là où ils étaient lorsque j'ai commencé. Un exemple de repo peut être vu ici - https://github.com/RyanHirsch/starter-node

J'ai mis à jour mon launch.json pour contenir

{
  "name": "Jest",
  "type": "node",
  "request": "launch",
  "program": "${workspaceRoot}/node_modules/jest/bin/jest.js",
  "stopOnEntry": false,
  "args": ["-i", "${file}"],
  "cwd": "${workspaceRoot}",
  "runtimeExecutable": null,
  "sourceMaps": true,
  "protocol": "inspector"
}

Et mon .babelrc ressemble :

{
  "plugins": ["@babel/plugin-proposal-object-rest-spread"],
  "sourceMaps": "inline",
  "presets": [
    [
      "@babel/preset-env",
      {
        "targets": {
          "node": "6.10"
        }
      }
    ]
  ]
}

Je pensais que les options de la carte source étaient suffisantes pour que cela fonctionne, mais j'avais tort. Que faut-il changer pour que mes points d'arrêt restent à leur emplacement d'origine ? En particulier lorsque j'essaie de déboguer mes tests.

\==== Editer ====

Auparavant, mes points d'arrêt se trouvaient sur la ligne de test 10 et la ligne d'implémentation 4 :

Before Debugging

Lorsque je commence à déboguer en sélectionnant mon fichier de test, puis que j'exécute Jest dans le volet de débogage de VS Code, mes points d'arrêt sautent à la ligne de test 9 et à la ligne d'implémentation 6 : During Debugging

Fonctionne sur Node 9.6.1 avec les extensions suivantes :

DavidAnson.vscode-markdownlint
EditorConfig.EditorConfig
Orta.vscode-jest
PKief.material-icon-theme
PeterJausovec.vscode-docker
Shan.code-settings-sync
bungcip.better-toml
dbaeumer.vscode-eslint
dracula-theme.theme-dracula
dzannotti.vscode-babel-coloring
eamodio.gitlens
esbenp.prettier-vscode
gerane.Theme-FlatlandMonokai
humao.rest-client
mauve.terraform
mikestead.dotenv
mjmcloug.vscode-elixir
mohsen1.prettify-json
ms-vscode.Theme-MaterialKit
ms-vscode.azure-account
ms-vscode.cpptools
ritwickdey.LiveServer
sbrink.elm
shanoor.vscode-nginx
vscodevim.vim

0 votes

Pouvez-vous montrer quelques captures d'écran avant et après l'exécution ? Où mettez-vous les points d'arrêt, comme vous le faites ? Parce que les points d'arrêt du projet fonctionnent très bien pour moi. Mentionnez également le nœud et la version de NPM que vous utilisez.

6 votes

Bien que cela n'explique pas pourquoi cela se produit pour vous, mais vous pouvez toujours essayer d'ajouter retainLines: true à votre .babelrc afin de ne pas confondre la ligne sur laquelle le point d'arrêt doit se trouver.

2 votes

Ajout de retainlines brisera tous les points d'arrêt des colonnes et, selon la documentation, produira du "code farfelu". Il semble que les cartes sources devraient fonctionner :(

6voto

Braulio Points 876

J'ai eu ce problème (en utilisant jest 23.6.0), j'ai vérifié qu'il s'agissait d'un problème connu sur la création d'une application react, résolu sur cette demande de retrait :

https://github.com/facebook/create-react-app/pull/3605/files

J'ai appliqué la configuration suivante à mon lancement.json

{ "type": "node", "request": "launch", "name": "Jest All", "program": "${workspaceFolder}/node_modules/jest/bin/jest", "args": [ "test", "--runInBand", "--no-cache" ], "sourceMaps": false, "console": "integratedTerminal", "internalConsoleOptions": "neverOpen" },

J'ai réussi à le faire casser sur les bons points de rupture.

0 votes

Mise à jour, cela a fonctionné pendant un certain temps mais ne fonctionne toujours pas, je viens de revenir à Jest 22, la configuration actuelle que j'utilise : stackoverflow.com/questions/52454412/

0 votes

Mise à jour, Jest et VS Code ont tous deux amélioré leur intégration, il est maintenant possible de les intégrer facilement à la fois sur les applications basées sur la création d'une application react et sur les applications créées à partir de zéro, j'ai créé un post pour couvrir ce sujet : basefactor.com/

5voto

Jefe_Spain Points 69

@RyanHirsch ; utilisez simplement retainLines": true à côté de sourceMap: "inline" dans votre babelrc et cela fonctionnera.

1voto

arcadia_168 Points 120

Après de nombreux efforts, voici comment j'ai réussi à faire fonctionner Jest avec le débogage Babel. travailler et rompre de manière cohérente sur les bonnes lignes.

Principalement, j'ai utilisé l'excellent Plugin Jest pour VSCode par le développeur Orta et en recherchant "Jest" dans le volet des extensions de VSCode :

How to find and install the extension via VSCode

A partir de là, j'ai juste appuyé sur le bouton Debug qui apparaît dans mon test, ce qui me permet d'activer correctement les points d'arrêt à la fois dans mes tests et dans le code de l'application.

Point d'arrêt atteint avec succès dans le fichier de test :

Successful Jest test debugging via Orta's Jest VSCode plugin

Point d'arrêt atteint avec succès dans le fichier de code source :

Breakpoint successfully hit in the source code file

0voto

Melchia Points 7965

La configuration correcte qui fonctionne pour babel-jest 25.0.0 & jest 25.0.0 est le suivant :

{
    "version": "0.2.0",
    "configurations": [
        {
            "name": "Debug Jest Tests",
            "type": "node",
            "request": "launch",
            "runtimeArgs": [
                "--inspect-brk",
                "${workspaceRoot}/node_modules/.bin/jest",
                "--runInBand"
            ],
            "console": "integratedTerminal",
            "internalConsoleOptions": "neverOpen",
            "port": 9229
        }
    ]
}

Pour plus d'informations, j'ai pris ma configuration à partir de ce qui suit dépôt

-1voto

The Huy Points 31

Ce qui a fonctionné pour moi, c'est la désactivation de sourcemap en ajoutant "sourceMaps": false à la configuration de lancement. Je ne comprends pas vraiment pourquoi cela fonctionne.

Ejemplo:

{
  "type": "node",
  "request": "launch",
  "name": "Jest Current File",
  "program": "${workspaceFolder}/node_modules/.bin/jest",
  "args": [
    "${relativeFile}",
    "--config",
    "jest.config.js",
    "--no-cache"
  ],
  "console": "integratedTerminal",
  "internalConsoleOptions": "neverOpen",
  "disableOptimisticBPs": true,
  "sourceMaps": false,
  "windows": {
    "program": "${workspaceFolder}/node_modules/jest/bin/jest",
  }
}

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X