2017-01-05 2 views
0

Ich weiß, dass es viele verwandte Fragen dazu gibt. Keine, die ich gefunden habe, adressieren diese Frage.Wie bekomme ich --debug und "watch", um gut zu koexistieren?

Ich möchte, dass mein Prozess mit --debug neu startet, wenn sich mein Code ändert. Zwei Befehle in meinem package.json:

"debug-no-inspect": "API_PORT=5566 API_LOGLEVEL=DEBUG node --debug dist/index.js | bunyan -o short", 
"watch": "watch 'npm run debug-no-inspect' ./src -d --wait=1", 

OK jene Arbeit gut von selbst und funktionieren ohne --debug, aber zusammen die --debug wird ein EADDRINUSE Fehler verursachen:

Error: listen EADDRINUSE :::5858 

Erhöhung der Zeit bis 4 Sekunden habe es nicht gemacht. Es funktioniert gut, wenn ich Ctrl-C und kill die Uhr und Neustart, aber das den Zweck verfehlt. Gibt es eine Möglichkeit, den Debugger-Port programmatisch freizugeben, bevor der Prozess neu gestartet wird, ohne alle meine Knotenprozesse zu löschen?

Mein bester Stich an dieser so weit: eine dumme env Variable hinzufügen (ID=9877876 oder FINDME=alksdjflaksjdfl) an den Startbefehl und dann verwenden, um den Prozess später zu finden und töten vor dem Neustart:

"watch": "watch 'kill $(ps a | grep [ID]=9877876 | cut -d \" \" -f 1) && npm run debug-no-inspect' ./src -d" 

dies jedoch funktioniert nicht. Der Befehl funktioniert für sich, aber nicht mit watch. Ist eine andere Bibliothek eine bessere Wahl?

Knoten 6; OSX; bash

Antwort

0

scheint die Lösung war watch zu entfernen und nodemon statt:

package.json:

"watch": "nodemon -V -w config -w src -e coffee,yaml,properties --exec npm -- run debug", 

Arbeiten einfach toll.

Verwandte Themen