J'utilise actuellement node avec nodemon . Ensuite, je me suis dit qu'il serait parfois agréable d'utiliser un inspecteur avec node alors j'ai commencé à utiliser node-inspector
Cependant, est-il possible d'exécuter les deux en même temps?
Normalement, pour exécuter nodemon, j'utiliserais:
nodemon server.js
//and similarly
node-debug server.js
J'ai aussi essayé:
nodemon --debug http.js
Mais malheureusement, cela n'a pas fonctionné non plus.
Mais les deux ensemble!?
Vous démarrez votre serveur avec nodemon --debug server.js
, puis vous devrez exécuter node-inspector dans une fenêtre de terminal distincte, sauf si vous poussez nodemon en arrière-plan.
Si vous souhaitez les exécuter en une seule commande, cela fonctionne pour moi: node-inspector & nodemon --debug app.js
(en remplaçant app.js par le nom de votre script). Si tout se passe mal, vous devrez parfois tuer manuellement node-inspector, mais exécuter la commande de cette façon vous donne la possibilité d'exécuter rs
pour redémarrer nodemon manuellement si nécessaire. HTH
Pour ceux qui veulent une solution indépendante du système d'exploitation et pas de hacks pour Windows, etc.
Vous pouvez utiliser npm-run-all qui est un outil CLI qui permet d'exécuter plusieurs scripts npm en parallèle ou séquentiellement. Vous devez donc définir votre package.json comme suit:
"scripts": {
"start": "npm-run-all --parallel lint start:debug start:server",
"lint": "eslint . --ext .js",
"start:debug": "node-debug server.js",
"start:server": "nodemon server.js"
}
Et puis à partir de CLI, vous faites: npm start
Mise en garde: d'après mon expérience, exécuter nodemon et node-debug ensemble conduit parfois à des comportements étranges d'inspecteur de noeud. J'ai donc depuis choisi de supprimer nodemon de mes scripts lors du débogage et de la fonction save-live-edit de node-inspecters pour modifier les fichiers à la volée.
{
"scripts": {
"dev": "npx nodemon --exec \"node --inspect --debug-port=0.0.0.0 src/index.js\""
}
}
Comme je fonctionne sous Linux, je a écrit un script bash basé sur réponse de rpaskett afin que vous n'ayez pas besoin de vous souvenir de cette commande maladroite à chaque fois.
Cependant, j'ai remarqué dans un commentaire que vous exécutez Windows. Voici quelques options que vous avez:
Vous pouvez convertir le script bash en batch Windows et l'enregistrer sous C:\Windows\System32\node-DEV.bat
. Je l'ai fait et cela fonctionne sur mon PC Windows:
@echo off
echo Starting DEV environment for %1
start node-inspector
nodemon --debug %1
Vous devriez alors pouvoir exécuter node-DEV server.js
.
Une autre option; vous pouvez exécuter quelque chose comme nodedev qui a été écrit dans Node.js donc indépendant de la plate-forme, bien qu'il semble qu'il n'ait pas été mis à jour depuis un certain temps.
Ou vous pouvez même exécuter le script bash dans un environnement Cygwin si vous en avez un à portée de main.
Un correctif hacky pour les utilisateurs de Windows exécutant un shell bash:
Tout d'abord, ajoutez node-inspector à votre Path. (Vous pouvez trouver où npm installe les packages avec npm list -g
)
Utilisez ensuite cette commande dans bash, ou ajoutez-la à vos scripts npm:
START /B node-inspector && nodemon --debug server.js
START /B
étant la commande windows à exécuter en arrière-plan.
Vous devez installer node-inspector et nodemon en utilisant:
npm install -g nodemon
npm install -g node-inspector
Pour exécuter sous Windows, créez un nouveau fichier .bat et ajoutez les lignes suivantes:
@echo off
echo Starting developer enviroment of the file %1
start nodemon --debug-brk %1
node-debug %1
Et courir:
node_desarrollo.bat "nom du fichier à exécuter.js"
Si exécuté avec une erreur:
Error: listen EADDRINUSE :::5858
at Object.exports._errnoException (util.js:855:11)
at exports._exceptionWithHostPort (util.js:878:20)
at Agent.Server._listen2 (net.js:1237:14)
at listen (net.js:1273:10)
at Agent.Server.listen (net.js:1369:5)
at Object.start (_debug_agent.js:21:9)
at startup (node.js:72:9)
at node.js:980:3
C'est normal, car l'inspecteur de nœuds doit ouvrir ce port pour se connecter, mais parce que nodemon --debug-brk %1
a été ouvert le port 5858 ne peut pas s'ouvrir et afficher le EADDRINUSE :::5858
erreur, notez que le drapeau --debug-brk
de nodemon il faut faire un point d'arrêt sur la première ligne. Essayez de modifier le fichier.js après avoir exécuté le .bat et regardez les modifications reflétées sur le débogueur. Ce débogueur redémarre et affiche les modifications effectuées dans le fichier.js. Joyeux codage JS !!!
Je n'ai pas réussi à faire jouer Nodemon à Nice avec node-inspector. Après un changement, il redémarrerait mais pas plus. C'est peut-être parce que j'utilise des conteneurs Docker.
Le moyen le plus simple de recharger l'application est de laisser l'inspecteur de nœuds le faire (je sais que ce n'est pas une réponse à l'exécution des deux mais cela a fonctionné pour moi).
Démarrez votre application de la manière suivante:
node-inspector --save-live-edit & \
node --debug /app/server.js