web-dev-qa-db-fra.com

Quelle est la bonne façon de déboguer un script npm à l'aide de vscode?

J'ai un script npm que j'essaie de déboguer. J'utilise vscode, j'ai donc pensé créer une configuration de débogage et la parcourir avec le débogueur.

Mon look de script npm est:

"scripts": {
    ...
    "dev": "node tasks/runner.js",
}

J'ai donc créé la configuration de débogage suivante:

{
    "version": "0.2.0",
    "configurations": [
        {
            "type": "node",
            "request": "launch",
            "name": "Launch Program",
            "runtimeExecutable": "npm",
            "cwd": "${workspaceRoot}",
            "runtimeArgs": [
                "run", "dev"
            ],
            "port": 5858,
            "stopOnEntry": true
        }
    ]
}

Et quand je le lance, le script s'exécute, mais vscode n'est jamais en mesure de se connecter et j'obtiens l'erreur:

Impossible de se connecter au runtime via le protocole "hérité"; pensez à utiliser le protocole "inspecteur" (timeout après 10000 ms).

J'ai essayé d'ajouter un protocole d'inspection:

       {
            "type": "node",
            "request": "attach",
            "name": "Attach (Inspector Protocol)",
            "port": 9229,
            "protocol": "inspector"
       }

Et exécuter le script npm via:

npm run dev --inspect

Et cette fois, je reçois l'erreur:

Assurez-vous Node a été lancé avec --inspect. Impossible de se connecter au processus d'exécution, délai d'expiration après 10000 ms raison: Impossible de se connecter à la cible: connectez ECONNREFUSED 127.0.0.1:9229).

Je ne sais pas quelle partie me manque.

--- (Modifier par balise en double

Je vois l'autre question concernant le débogage d'un script npm via vscode, mais les détails de l'autre question et réponses ne sont pas aussi détaillés et spécifiques. Si quelqu'un recherche les messages d'erreur vscode spécifiques que j'ai rencontrés ou le type de configuration que j'avais, ils n'obtiendraient pas nécessairement le niveau de réponse de niveau que la réponse choisie pour cette question donne.

20
Chris Schmitz

Vous ne devriez pas essayer de déboguer le npm script parce que ce que vous voulez vraiment, c'est attacher votre débogueur au script qui est lancé avec la commande npm run (NPM ici n'est utilisé que comme un runner de tâche).

{
  "version": "0.2.0",
  "configurations": [
      {
        "type": "node",
        "request": "launch",
        "name": "Launch Program",
        "program": "${workspaceRoot}/tasks/runner.js"
      }
  ]
}

Si vous voulez vraiment l'exécuter en utilisant le script npm, vous pouvez utiliser la configuration suivante:

{
  "type": "node",
  "request": "launch",
  "name": "Launch via NPM",
  "runtimeExecutable": "npm",
  "windows": {
    "runtimeExecutable": "npm.cmd"
  },
  "runtimeArgs": [
    "run-script",
    "dev"
  ],
  "port": 5858
}

mais vous devez aussi changer votre commande de script (spécifier un port de débogage)

  "scripts": {
    "dev": "node --nolazy --debug-brk=5858 tasks/runner.js"
  },

Vous pouvez explorer différentes configurations de débogage en cliquant simplement sur l'icône d'engrenage et en sélectionnant une.

enter image description here

Plus d'informations sur le débogage de Node.js peuvent être trouvées dans la documentation VS Code .

22
Jakub Synowiec