web-dev-qa-db-fra.com

Visual Studio Code peut-il être configuré pour se lancer avec nodemon

J'ai installé nodemon en tant que package global dans mon système. Cela fonctionne lorsque j'ai exécuté nodemon en cmd.

Mais quand j'utilise vscode avec ce launch.json fichier, vscode lève cette exception:

demande de lancement: l'exécutable d'exécution XXX\XXX\XXX\XXX\nodemon n'existe pas

le launch.json c'est:

{
"version": "0.2.0",
"configurations": [
    {
        "name": "Launch",
        "type": "node",
        "request": "launch",
        "program": "app.js",
        "stopOnEntry": false,
        "args": [],
        "cwd": ".",
        "runtimeExecutable": nodemon,
        "runtimeArgs": [
            "--nolazy"
        ],
        "env": {
            "NODE_ENV": "development"
        },
        "externalConsole": false,
        "preLaunchTask": "",
        "sourceMaps": false,
        "outDir": null
    },
    {
        "name": "Attach",
        "type": "node",
        "request": "attach",
        "port": 5858
    }
]
}

quand j'efface le nodemin dans runtimeExecutable il fonctionne parfaitement avec le noeud

36
Mickel Sierra

Tout d'abord, installez nodemon en tant que dépendance de développement:

npm install --save-dev nodemon

Pour les nouvelles versions de VS Code configurez votre .vscode/launch.json fichier comme celui-ci:

{
    "version": "0.2.0",
    "configurations": [
    {
        "type": "node",
        "request": "launch",
        "name": "nodemon",
        "runtimeExecutable": "${workspaceFolder}/node_modules/nodemon/bin/nodemon.js",
        "program": "${workspaceFolder}/app.js",
        "restart": true,
        "console": "integratedTerminal",
        "internalConsoleOptions": "neverOpen"
    }]
}

Les éléments les plus importants sont la propriété runtimeExecutable qui pointe vers le script nodemon et la propriété program qui pointe vers votre script de point d'entrée.

Si vous utilisez un ancien code VS (ce que vous ne devriez pas), essayez cette configuration de lancement:

{
  "version": "0.2.0",
  "configurations": [
    {
      "name": "Launch with nodemon",
      "type": "node",
      "request": "launch",
      "program": "${workspaceRoot}/node_modules/nodemon/bin/nodemon.js",
      "args": ["${workspaceRoot}/app.js"],
      "runtimeArgs": ["--nolazy"]
    }
  ]
}

Les éléments les plus importants sont la propriété program qui pointe vers le script nodemon et la propriété args qui pointe vers votre script de point d'entrée normal.

39
Adrian T

Je n'ai pas pu obtenir la réponse de @ AdrianT avec le débogueur attaché. Il semble qu'il existe une nouvelle méthode prise en charge intégrée pour ce faire:

  1. Ouvrez le menu déroulant Lancer la configuration et sélectionnez "Ajouter une configuration ..."
  2. Sélectionnez "Node.js: Nodemon Setup"

Cela ajoutera quelque chose comme ceci à votre launch.json:

{
        "type": "node",
        "request": "launch",
        "name": "nodemon",
        "runtimeExecutable": "nodemon",
        "program": "${workspaceRoot}/app.js",
        "restart": true,
        "console": "integratedTerminal",
        "internalConsoleOptions": "neverOpen"
}

Assurez-vous que votre paramètre "programme" est votre script de point d'entrée correct.

Vous devez installer nodemon globalement pour que cela fonctionne (npm install -g nodemon) (selon la documentation )

Votre application s'exécute maintenant et vous pouvez définir des points d'arrêt qui seront atteints et la console se connecte à la fenêtre de terminal intégrée.

Notez que la fin de la session de débogage termine uniquement le programme à déboguer, pas nodemon lui-même. Pour terminer nodemon, appuyez sur Control-C dans le terminal intégré.

28
Mathew

Dans le code Visual studio, créez une configuration de lancement:

{
    "name": "Attach",
    "type": "node",
    "request": "attach",
    "port": 5858,
    "restart": true
}

exécutez nodemon à partir de la ligne de commande: nodemon --debug server.js

Maintenant, attachez à partir de VC et vuala.

15
Yevgeni

La fixation est certainement une option facile. Afin de vous assurer que votre code casse, assurez-vous d'exécuter nodemon avec --inspect-brk (noeud 8+), par exemple:

nodemon --inspect-brk src/app.js

Après le lancement de nodemon, le port sera ouvert pour les connexions de débogage:

Debugger listening on ws://127.0.0.1:9229/someUUID

Vous pouvez prendre ce port afin de construire votre configuration de lancement qui est assez simple:

{
  "type": "node",
  "request": "attach",
  "name": "Attach",
  "port": 9229,
  "restart": true
},
3
Fred

Non, actuellement, ce n'est pas possible. Mais j'ai réussi à faire fonctionner cela quelque peu en utilisant nodemon. Je le lance depuis Grunt. Mais une ligne de commande équivalente devrait faire de même.

EDIT : Après une soirée de test, je peux dire que l'approche ci-dessous est encore un peu floconneuse: S, l'attachement échoue par intermittence et parfois les points d'arrêt sont ignorés.

EDIT2: Vous pouvez également spécifier un port de débogage non par défaut dans Gruntfile en utilisant ['--debug-brk=5860'] pour nodeArgs. On m'a également conseillé d'utiliser --debug-brk au lieu de --debug. Peut-être que cela supprimera le flakeyness actuel. Je reviendrai et mentionnerai ici si cela aide (j'ai actuellement changé de projet).

Dans le cas où cela pourrait aider quiconque travaille avec les paramètres ci-dessous dans la version actuelle du code VS (par exemple v0.10.6) sous Windows 10. Mais cela fonctionnera probablement aussi sur Mac (je pourrais vérifier plus tard). Mais notez que je dois parfois déclencher une reconstruction en modifiant + en enregistrant un fichier avant que le débogueur ne le récupère.

/.vscode/launch.json

{
"configurations": [{
    "name": "Launch",
    "outDir": null

},{
    "name": "Attach",
    "type": "node",
    "request": "attach",
    "port": 5858
}]

}

/Gruntfile.js

nodemon : {
    dev : {
    script : 'launcher.js'
    },
    options : {
        ignore : ['node_modules/**', 'Gruntfile.js'],
               nodeArgs: ['--debug'],
        env : { PORT : '4123'
        }
    }
}

Je suppose que le port de débogage 5858 est le port par défaut car il n'est pas spécifié ici (notez qu'il est dans launch.json au dessus de.)

1
Bart

J'utilise le Node plugin Exec. Il vous permet d'exécuter et d'arrêter une application de nœud dans vcs en appuyant sur F8 et F9 (s'applique sur un fichier ouvert dans l'éditeur). Cela pourrait aider comme (temporaire) solution de contournement.

0
KiSa87

Oui, vous pouvez! Depuis une mise à jour récente, vous pouvez attacher le débogueur à un processus Nodemon en cours d'exécution. Cette page contient plus d'informations . Recherchez nodemon sur la page pour voir les instructions.

0
Aron

https://github.com/Microsoft/vscode-recipes/tree/master/nodemon

Le lien ci-dessus m'a aidé à déboguer avec succès l'application nodemon + express. Les étapes y sont bien expliquées.

launch.json

{
"version": "0.2.0",
"configurations": [
    {
        "type": "node",
        "request": "attach",
        "name": "Node: Nodemon",
        "processId": "${command:PickProcess}",
        "restart": true,
        "protocol": "inspector",
    }
]

}

script npm

"dev-server": "nodemon ***--inspect*** server.js"

Pas:

  1. Exécutez le serveur à l'aide du script npm. Veuillez noter --inspecter l'argument dans le script
  2. Démarrez le débogueur de code visuel, une invite s'affiche pour sélectionner le processus du serveur de noeud
  3. sélectionner le processus du serveur de noeud

Vous devriez maintenant pouvoir déboguer.

si cela ne vous a pas aidé, alors veuillez consulter le document officiel, les options de configuration y sont expliquées. https://code.visualstudio.com/docs/nodejs/nodejs-debugging#_launch-configuration-support-for-npm-and-other-tools

0
Ninjaneer