Ich muss ng serve
jedes Mal ausführen, wenn Änderungen an den Quelldateien vorgenommen werden. Ich habe keinen Fehler in der Konsole.
Angular CLI: 1.6.2
Node: 8.9.1
OS: linux ia32
Angular: 5.1.2
... animations, common, compiler, compiler-cli, core, forms
... http, language-service, platform-browser
... platform-browser-dynamic, router
@angular/cdk: 5.0.2-c3d7cd9
@angular/cli: 1.6.2
@angular/material: 5.0.3-e20d8f0
@angular-devkit/build-optimizer: 0.0.36
@angular-devkit/core: 0.0.22
@angular-devkit/schematics: 0.0.42
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.9.2
@schematics/angular: 0.1.11
@schematics/schematics: 0.0.11
typescript: 2.4.2
webpack: 3.10.0
Antworten:
Meistens unter Linux
ng serve
oderng build --watch
funktioniert nicht, wenn das Verzeichnis nicht über ausreichende Berechtigungen verfügt.Die Lösung besteht entweder darin, die erforderlichen Berechtigungen bereitzustellen oder
sudo
stattdessen zu verwenden .AKTUALISIEREN
Das Watch-Flag in
ng serve
ist tatsächlich redundant, da es die Standardoption ist. Dank an @Zaphoid für den Hinweis auf den Fehler.quelle
ng serve
mitsudo
Berechtigungen. Es hat funktioniert.a+x
, aber ich warne davor, Berechtigungen zu verwenden, anstattsudo
.sudo
ist für einen einzelnen Befehl, während das Ändern von Berechtigungen diese für immer ändert, was ein größeres Sicherheitsleck zu sein scheint.--watch
sollte nicht notwendig sein, da dies eine Standardeinstellung ist, siehe angle.io/cli/serve . Also @T. van den Bergs Antwort war tatsächlich präziser!Funktioniert gut unter Linux und Windows
quelle
Bedenken Sie, dass bei einer großen Anzahl von Dateien bei INotify Watches unter Linux ein Limit besteht . So kann beispielsweise eine Erhöhung des Uhrenlimits auf 512 KB behoben werden.
Beachten Sie, dass der vorherige Vorgang eine speicherinterne Änderung verursacht, die Sie nach dem Neustart verlieren.
Sie können es jedoch dauerhaft machen , indem Sie Folgendes ausführen:
Als Referenz können Sie Folgendes überprüfen: https://github.com/angular/angular-cli/issues/8313#issuecomment-362728855 und https://github.com/guard/listen/wiki/Increasing-the-amount- of-inotify-watchers
quelle
cat /proc/sys/fs/inotify/max_user_watches
Antwort ist eine vollständig vollständige Antwort, aber hier ist ein Link mit etwas mehr Beschreibung Confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+LimitAus diesem Grund kann das System, das Änderungen erkennt, standardmäßig nicht so viele Uhren verarbeiten.
Und die Lösung besteht darin, dass
change the amount of watches
Sie Folgendes verarbeiten können (die maximale Anzahl von Dateien, die im Projekt enthalten sein werden)run this command
:Das Problem mit inotify besteht darin, diesen Zähler bei jedem Neustart Ihres Computers zurückzusetzen.
quelle
In Ihrem Projekt gehört der dist-Ordner zum Stammverzeichnis
Versuchen Sie,
sudo ng serve
anstelle von zu verwendenng serve
.Eine andere Lösung
Wenn eine große Anzahl von Dateien vorhanden ist, funktioniert watch unter Linux nicht. Bei INotify Watches unter Linux gibt es ein Limit. Also das Uhrenlimit erhöhen
quelle
Sie müssen nur sudo ng ausführen , um das Problem zu beheben.
quelle
Dies kann helfen, wenn es das gleiche Problem ist, das ich hatte. Der Versuch zu verwenden
ng serve
undng build --watch
manchmal funktionierte, aber meistens suchten sie nicht nach Codeänderungen und ich dachte, es hätte etwas damit zu tunng
.Dann erinnerte ich mich an ein Problem, das ich vor einiger Zeit mit inotify Uhren hatte
Ich habe dies auf meinem Ubuntu-Computer ausgeführt und es scheint sich eingeschaltet zu haben und Codeänderungen zu beobachten:
echo fs.inotify.max_user_watches = 524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
Kredit geht an Scott Smith
quelle
Versuche dies. Wenn Sie dies mögen, müssen Sie nicht immer einen Befehl auslösen. Sie müssen nur einmal auslösen
quelle
Hat bei mir nicht funktioniert:
Versuchen :
das hat bei mir funktioniert!
quelle
Wenn alles andere fehlschlägt, überprüfen Sie Ihren Code auf Syntaxfehler - insbesondere auf
index.html
oder Teile Ihres Codes, die Sie kürzlich bearbeitet haben, kurz bevor dieses automatische Update fehlgeschlagen ist. Syntaxfehler beeinträchtigen diese Funktion zur automatischen Aktualisierung in Angular.In meinem Fall waren mehrere Projekte in separaten VS-Code-Fenstern geöffnet. Bei allen meinen anderen Projekten hat es
ng serve
wie erwartet funktioniert: Es wird beim Speichern automatisch aktualisiert. Bei einem Projekt wäre jedoch eine manuelle Aktualisierung erforderlich, um das Update durchzuführen. Es endete damit, dass ich HTML-Kommentare außerhalb des definierten HTML-Bereichs der Vorlage hatte (also kamen die HTML-Kommentare vorher<!doctype html>
. Es war also ungültig, da es sich um eine HTML-Syntax außerhalb eines HTML-Bereichs handelt.Ich habe die Kommentare gelöscht und bam, das automatische Update hat wieder funktioniert (nach einer weiteren manuellen Aktualisierung).
Gehen Sie also
index.html
andere Teile Ihres Codes durch, die Sie kürzlich bearbeitet haben, bevor dies kaputt ging, und schneiden Sie nacheinander skizzenhafte Teile aus, aktualisieren Sie sie im Browser, kehren Sie dann zu VS Code zurück und nehmen Sie eine Änderung vor, speichern Sie sie und prüfen Sie, ob sie automatisch aktualisiert wird .quelle
@Input()
, aber das Attribut war wie folgt leer :[myInput]=""
. Füllen Sie es mit einem wiederhergestellten Wertng serve
, keine manuelle Aktualisierung erforderlich.Ich habe festgestellt, dass der Ordner dist / im Projekt root gehört. Deshalb
sudo ng serve
sieht man die Änderungen wannng serve
dies nicht der Fall ist.Ich habe den Ordner dist / entfernt
sudo rm -R dist/
und ihn als aktuellen Benutzer neu erstellt, indem ich den Entwicklungsserver gestartet habe,ng serve
und alles hat wieder funktioniert.quelle
Ich hatte dieses Problem bei einer neuen Linux-Ubuntu-Installation und bemerkte, dass in VSCode gleichzeitig ein Fehler über "zu viele Beobachter für Limits" angezeigt wurde. Ich habe die Anweisungen befolgt, um das Problem in VSCode zu beheben, und es hat auch das Problem mit ng watch behoben. Weitere Informationen finden Sie hier https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc
Ich bemerkte Leute, die vorschlugen
sudo
, Wache zu laufen. Dies ist ein gefährliches Spiel. Sie gewähren npm-Paketen Root-Zugriff auf Ihr System. Wenn Ihre Berechtigungen korrekt sind, könnte mein Problem Ihr Problem sein, da das Limit pro Benutzer gilt. Wenn Sie als sudo ausgeführt werden, werden Sie als root ausgeführt, anstatt als Ihr aktueller Benutzer, der das Limit überschreitet (indem Sie eine uhrenlastige Idee wie vscode oder atom ausführen auf ). Wenn Sie aus irgendeinem Grund die falschen Berechtigungen haben, stellen Sie diese ordnungsgemäß auf Ihren Benutzer / Ihre Gruppe mit einchown
.quelle
chown
anstatt laufenng serve
mitsudo
, die mit allen Mitteln vermieden werden sollte!Ich hatte das gleiche Problem mit
sudo ng serve
schien das Problem unbefriedigend zu "lösen". Verwenden vonsudo
ist IMO nicht zufriedenstellend.Ich habe meine INotify-Anzahl mit meinem Standardlimit (8192) verglichen, indem ich Folgendes verwendet habe:
lsof | grep inotify | wc -l
Der vom obigen Befehl zurückgegebene Wert war weit unter dem Limit. Die INotify-Lösung schien also nicht auf mein Problem zuzutreffen.Ich habe auch die Berechtigungen und den Besitz überprüft. Beide schienen in Ordnung zu sein, vergleichbar mit einem anderen Projekt, das funktioniert hat.
Aus Frustration habe ich VS Code neu gestartet. Grundsätzlich habe ich alle Instanzen geschlossen, zwei ausgeführt und beide erneut geöffnet, woraufhin das Problem behoben wurde.
Ich neige irgendwo zu einem möglichen Fehler. Dies ist zu beachten, bevor Sie Ihr System auf den Kopf stellen. Zum Glück / Leider ist dieses Problem nicht wieder aufgetreten, ich werde tiefer graben, wenn es das tut.
quelle
Sie können dies auch versuchen.
quelle
Ich empfehle nicht, die SO-Parameter zu ändern. Nach dem Ändern des Parameters fs.inotify.max_user_watches sind einige (Verzögerungs-) Probleme aufgetreten, da andere Dienste ausgeführt werden ...
Das "ng serve --poll = 2000" ist eine gute Lösung, aber Sie werden diesen Parameter wahrscheinlich vergessen ...
Untersuchung: https://github.com/angular/angular-cli/wiki/angular-cli Ich hatte die folgende Lösung durchgeführt.
De angular.json wurde mit dem Poll-Parameter geändert
Funktioniert auf meiner Maschine: D.
quelle
npm run ng serve -- --poll=2000
. Dies ist nicht so gut wie die Erkennung von Dateiänderungen, sondern funktioniert nur auf meinem Computer (Unternehmensvariante von Ubuntu 18.04). Ich habe max_user_watches auf 524288 gesetzt, erkenne aberng serve
nach einiger Zeit immer noch keine Änderungen. Ich habe bessere Dinge zu tun, als dies zu untersuchen, also ist diese Lösung genau das, was ich brauche.Den
sudo ng serve
Befehl auszuführen ist eine schlechte Praxis. Sie müssen dienpm
Berechtigung ändern, damitnpm packages
Sie sie nicht jedes Mal verwenden müssen, wenn Sie einige installieren müssensudo
.Über diesen Link können Sie ändern, wie Sie die npm-Berechtigung für den aktuellen Benutzer ändern. Nachdem Sie diese Schritte ausgeführt haben, nachdem Sie die npm-Berechtigung festgelegt haben, können Sie den
node_modules
Ordner aus Ihrem Projektverzeichnis entfernen und verwendennpm install
. Nach Abschluss der Paketinstallation können Sie ausführenng serve
und müssen dies nichtsudo ng serve
jedes Mal tun, wenn Sie Ihr Winkelprojekt ausführen möchten.quelle
für Fenster -
Für Linux -
quelle
Meine Antwort ist möglicherweise nicht hilfreich. aber ich suche diese Frage deswegen.
Nachdem ich einen neuen Computer gekauft habe, vergesse ich, die automatische Speicherung im Editor einzustellen. Daher bleibt der Code tatsächlich unverändert.
quelle
Ich möchte meinen Fall hier nur als Referenz belassen. In meinem Fall lag das Problem bei den Systemberechtigungen. Ich habe einen freigegebenen Ordner in einer VM als Repo verwendet. Ich hatte keine andere Nachricht wie Erlaubnis verweigert oder so. Versuchte alles und dann wurde mir klar, dass ich ein Netzwerklaufwerk verwendete.
quelle
Der Neustart des Servers hat bei mir funktioniert.
quelle
Die vollständige Berechtigung für den Projektordner zu erteilen, hat bei mir funktioniert
quelle
In meinem Fall auf einem Mac wurde dies behoben, indem dem angemeldeten Benutzer die Lese- / Schreibberechtigung für / usr / local / lib erteilt wurde
quelle