Start het knooppunt opnieuw op bij het wijzigen van een bestand

Voor iemand die afkomstig is van PHP-achtergrond lijkt het proces van het doden van knooppunten en het opnieuw starten na elke codeverandering erg vervelend. Is er een vlag bij het starten van een script met een knooppunt om het knooppunt automatisch opnieuw op te starten wanneer de codewijziging wordt opgeslagen?

138

7 antwoord

Een goede optie is Node-supervisor en Node.js Opnieuw opstarten bij bestandswijziging is een goed artikel over hoe het te gebruiken, meestal:

 npm install supervisor -g

en gebruik na het migreren naar de hoofdmap van uw toepassing het volgende

 supervisor app.js
146
toegevoegd
hetzelfde hier, om welke reden dan ook, zoals ik eerder met nodemon gebruikte, zonder enig probleem.
toegevoegd de auteur ZenMaster, de bron
Werkt perfect!!
toegevoegd de auteur JRichardsz, de bron
Node-supervisor wordt niet meer onderhouden.
toegevoegd de auteur aleung, de bron
+1 voor node-supervisor, het werkte voor mij toen nodemon faalde ..
toegevoegd de auteur Dean Rather, de bron
Werkte ook voor mij. Ik moest de standaardwachtwoordparameter voor jokertekens vervangen door server.js omdat deze constant opnieuw werd opgestart. Dit kwam omdat mijn server de client tijdens het opstarten had opgebouwd en dus de bestanden veranderde. supervisor --watch server.js server.js heeft dit opgelost.
toegevoegd de auteur scipilot, de bron
Mijn favoriete vernieuwingsinterval om te controleren of het bestand is gewijzigd, is bijna onmiddellijk!
toegevoegd de auteur NiCk Newman, de bron
Er is een bug. Voeg een nieuw js-bestand toe en wijzig een bestaand js-bestand om dit te vereisen. Applicatie wordt opnieuw opgestart. Verander dat laatst toegevoegde js-bestand en de toepassing wordt niet opnieuw gestart.
toegevoegd de auteur Eduardo, de bron

Jij, mijn vriend, zou willen kijken naar iets genaamd nodemon ( https://github.com/remy/nodemon )

Nodemon zal de bestanden in de map zien die de nodemon is gestart, en als ze veranderen, zal het uw knooppunttoepassing automatisch opnieuw opstarten.

Voorbeeld:

nodemon ./server.js localhost 8080

of gewoon

nodemon server
82
toegevoegd
Enig idee waarom Node opnieuw moet worden opgestart om codewijzigingen door te voeren? En waarom hebben andere servers (zoals Apache/PHP) geen herstart nodig?
toegevoegd de auteur maverick, de bron
@Daerdemandt bedankt voor het delen van dat .. maar ik snap nog steeds niet waarom moet de server (op elk platform) starten en stoppen? Is het omdat het een cache van bestanden (antwoorden) onderhoudt? Ik dacht dat de server de bestanden op het moment van het verzoek van de schijf zal laden, deze zal verwerken en vervolgens het antwoord zal verzenden. Ik ben nieuw voor server-side programmeren.
toegevoegd de auteur maverick, de bron
Kunt u/moet u nodemon gebruiken in de productieomgeving?
toegevoegd de auteur JoeTidee, de bron
Ik weet niet zeker hoe nodemon vandaag nog steeds standhoudt (zoals dit in 2012 was), maar om veiligheidsredenen weet ik niet zeker of ik mijn server opnieuw wil opstarten op prod wanneer een bestand verandert. Iets als pm2 is misschien meer geschikt voor een productieomgeving.
toegevoegd de auteur Menztrual, de bron
@ dk49 omdat PHP-scripts in dat geval worden gestart voor elk binnenkomend verzoek en worden gestopt nadat ze de pagina hebben gegenereerd.
toegevoegd de auteur Daerdemandt, de bron

forever module has a concept of multiple node.js servers, and can start, restart, stop and list currently running servers. It can also watch for changing files and restart node as needed.

Installeer het als u het nog niet hebt:

npm install forever -g

Na het installeren, de opdracht forever aanroepen: gebruik de vlag -w om het bestand te bekijken op wijzigingen:

forever -w ./my-script.js

Bovendien kunt u directory bekijken en patronen negeren:

forever --watch --watchDirectory ./path/to/dir --watchIgnore *.log ./start/file
65
toegevoegd
@BrianDiPalma Je moet misschien wat negeerpatronen toevoegen als er veranderende bestanden, zoals logs, onder de watch directory staan. Controleer de documentatie om te zien of u een vertraging tussen opnieuw opstarten kunt definiëren.
toegevoegd de auteur hyde, de bron
Forever JS heeft een fout in Windows die het knooppuntproces niet doodt wanneer het script wordt beëindigd. Moet het knooppuntproces handmatig doden :( JS applicatie met behulp van forever module op windows"> stackoverflow.com/questions/14556852/…
toegevoegd de auteur pmont, de bron
+1 is voor altijd vrij veelzijdig voor zowel ontwikkeling/testen als productie.
toegevoegd de auteur smertrios, de bron
Ik heb voor altijd geprobeerd om mijn ES2015 Expess.js/Webpack-server opnieuw te starten met deze opdracht forever -c babel-node -w --watchDirectory ./server ./server/index.js maar helaas lijkt het erop om voorgoed in een neerwaartse spiraal te sturen en het herstart de server te vaak, waardoor de poort al in gebruik fouten bevat ... is er een manier om een ​​pauze toe te voegen na een herstart?
toegevoegd de auteur Brian Di Palma, de bron
@hyde Het was geen vertraging die nodig was, maar de -t of killTree -optie was vereist, ik vermoed dat babel-node werd gedood maar niet de Express-server het heeft voortgebracht.
toegevoegd de auteur Brian Di Palma, de bron

Verschillende NPM's zijn beschikbaar om het leven gemakkelijk te maken.

Voor ontwikkeling

node-dev: npm install -g node-dev
nodemon: npm install -g nodemon
supervisor: npm install -g supervisor
forever : npm install -g forever

For Production (with extended functionality such as clustering, remote deploy etc)

pm2: npm install -g pm2
Strong Loop Process Manager: npm install -g strongloop

De vergelijking tussen Forever, PM2 en StrongLoop is te vinden op de StrongLoop -website.

16
toegevoegd

Je kunt ook proberen nodemon

Nodemon installeren

npm install -g nodemon

Nodemon gebruiken

Normaal starten we knoopprogramma zoals:

node server.js

Maar hier moet je het volgende doen:

nodemon server.js
8
toegevoegd
nodemon heeft vervelende bugs. Het was een tijdverspiller voor mij.
toegevoegd de auteur kta, de bron
Goed en eenvoudig antwoord !!
toegevoegd de auteur lesimoes, de bron

knooppunt-dev

node-dev is een geweldig alternatief voor zowel nodemon als supervisor voor ontwikkelaars die graag meldingen (of libnotify) op hun bureaublad krijgen wanneer de server herstart of wanneer er een fout is of wijzigen optreden in bestand.

Installatie:

npm install -g node-dev

Gebruik node-dev, in plaats van node:

node-dev app.js

Kennisgeving over het wijzigen van het bestand, zodat de server automatisch wordt gestart

enter image description here

console uitgezet

enter image description here

6
toegevoegd

Ik gebruik runjs zoals:

runjs example.js

The package is called just run

npm install -g run
4
toegevoegd
het is niet beter, gewoon een andere optie
toegevoegd de auteur sp2danny, de bron