Es scheint, der lokale Server begann mit "Heroku lokalen Web" nicht für Dateiänderungen suchen und neu starten. Wie kann ich es dazu bringen?Restart Heroku lokal bei Dateiänderung?
Antwort
Ich denke, dass heroku local
wird watch
für Änderungen an statischen Ressourcen (clientseitige Code). Es ist jedoch offensichtlich nicht ideal, den Server manuell mit jedem Quellcode zu starten, den Sie am Webserver vornehmen (serverseitiger Code).
Wenn Sie eine NodeJS-Anwendung erstellen, ist mein Vorschlag, den Befehl watch
, den Gulp bietet, zu versuchen. Dies erfordert jedoch auch, dass Sie (a) Gulp installieren und (b) das Gulp-Skript schreiben. Wieder würde diese Lösung nur für NodeJS funktionieren, und diese Schritte wären nicht erforderlich, wenn heroku local
die Dateien für Sie angesehen würden.
- Installieren NodeJS
Installieren Gulp
npm install gulp --save-dev
das Gulp Skript hinzufügen (wo procfile lebt)
Hinweis: nicht in der Lage, die folgenden
watch
Code zu erhalten, arbeiten erfolgreich, aber es könnte eine Vorlage für andere zur Verfügung stellen, um eine funktionierende Lösung zu erstellen.var gulp = require('gulp'); var exec = require('child_process').exec; gulp.task('heroku-local', function() { exec("heroku local"); }); gulp.task('heroku-local:watch', function() { gulp.watch([ 'file-to-watch', 'folder-to-watch/**/*' ], ['heroku-local']); });
Führen Sie das Skript Gulp (von Verzeichnis, in dem procfile lebt)
gulp heroku-local:watch
heroku local
nur verwendet node-foreman
(https://www.npmjs.com/package/heroku-local), so dass es leichter ist, dass für das Ansehen direkt zu verwenden.
Zuerst installieren foreman
und nodemon
:
npm i --save-dev foreman nodemon
Nun müssen Sie zwei Skripte in Ihrem package.json
einzurichten:
{
...
"scripts": {
"start": "nf start",
"watch": "nodemon --watch directory-to-watch"
},
...
}
Sie jetzt die App ausführen können, während sie das Verzeichnis Uhren und lädt bei Änderungen mit
npm run watch
Der einfachste Weg, dies zu tun, ist, nodemon mit heroku local
als ausführbare Datei auszuführen - also nodemon --exec "heroku local"
.
heroku local
wird jedoch mit einem Nicht-Null-Exit-Code für das standardmäßige Nodemon-Shutdown-Signal (SIGUSR2) beendet. Daher müssen Sie nodemon ein zusätzliches Flag hinzufügen, um das Interrupt-Signal auf SIGTERM zu setzen.
nodemon --exec "heroku local" --signal SIGTERM
(getestet mit [email protected], [email protected], [email protected])
Dies funktioniert wie gewünscht - neu starten' heroku local' mit allen Änderungen. –
Funktioniert gut! Vielen Dank! – ohjeeez
Dank. Aber es konnte nicht funktionieren ... – IsmailS
Haben Sie die 'spawn' Methode probiert? https://nodejs.org/api/child_process.html # child_process_child_process_spawn_command_args_options Das könnte funktionieren ... – tfmontague
Ich verwende den Gulp Watcher, um Knotenprozess zu beenden, indem ich eine spezielle Route, die ich erstellt habe, '/ killme' besuche und dann wieder starte. Natürlich sollte diese URL nicht auf der Live-Website existieren, ist aber lokal nützlich. im gulpfile: 'exec ("curl http: // localhost: 5000/killme; Heroku local");' in meiner node.js/express App: '' 'router.get ('/ killme ', Funktion (req, res) { \t process.exit (1); }); '' ' – Lucas