Je dois exécuter à ng serve
chaque fois que des modifications sont apportées aux fichiers source.Je n'ai aucune erreur dans la console.
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
Réponses:
La plupart du temps sous Linux,
ng serve
oung build --watch
ne fonctionne pas si le répertoire ne dispose pas des autorisations suffisantes.La solution consiste soit à fournir les autorisations nécessaires, soit à utiliser à la
sudo
place.METTRE À JOUR
watch flag in
ng serve
est en fait redondant car c'est l'option par défaut. Merci à @Zaphoid d'avoir signalé l'erreur.la source
ng serve
avec dessudo
autorisations. Ça a marché.a+x
, mais je mets en garde contre l'utilisation des autorisations, plutôt quesudo
.sudo
est pour une seule commande, alors que la modification des autorisations les change pour toujours, ce qui semble une plus grande fuite de sécurité.--watch
ne devrait pas être nécessaire, car il s'agit d'une valeur par défaut, voir angular.io/cli/serve . Alors @T. La réponse de van den Berg était en fait plus précise!Fonctionne bien sous Linux et Windows
la source
Considérez que, lorsque vous avez un grand nombre de fichiers, il existe une limite chez INotify Watches sous Linux. Ainsi, augmenter la limite des montres à 512K, par exemple, peut résoudre ce problème.
Notez que le précédent entraîne une modification en mémoire que vous perdrez après le redémarrage.
Cependant, vous pouvez le rendre persistant , en exécutant:
A titre de référence, vous pouvez vérifier: https://github.com/angular/angular-cli/issues/8313#issuecomment-362728855 et https://github.com/guard/listen/wiki/Increasing-the-amount- observateurs-inotify
la source
cat /proc/sys/fs/inotify/max_user_watches
réponse ci-dessus est une réponse totalement complète, mais voici un lien avec un peu plus de description confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+LimitEn raison de, le système qui détecte les modifications ne peut pas gérer autant de montres par défaut.
Et la solution est de
change the amount of watches
pouvoir gérer (le nombre maximum de fichiers qui seront dans le projet), vous devezrun this command
:Le problème avec inotify est la réinitialisation de ce compteur chaque fois que vous redémarrez votre ordinateur.
la source
Dans votre projet, le dossier dist est propre à la racine
Essayez d'utiliser à la
sudo ng serve
place deng serve
.Une autre solution
Quand il y a un grand nombre de fichiers, la montre ne fonctionne pas sous Linux, il y a une limite chez INotify Watches sur Linux. Donc augmenter la limite de montres
la source
Il suffit d'exécuter sudo ng serve pour résoudre le problème.
la source
Cela peut aider si c'est le même problème que j'ai eu. Essayer d'utiliser
ng serve
etng build --watch
parfois travaillé, mais la plupart du temps, ils ne surveillaient pas les changements de code et je pensais que c'était quelque chose à voir avecng
.Puis je me suis souvenu d'un problème que j'avais eu il y a quelque temps avec les montres inotify
J'ai exécuté ceci sur ma machine Ubuntu et il semble avoir démarré et regarder les changements de code:
echo fs.inotify.max_user_watches = 524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
le mérite revient à Scott Smith
la source
essaye ça. Si vous faites comme ça, vous n'avez pas besoin de toujours tirer une commande Vous n'avez besoin de tirer qu'une seule fois
la source
Cela n'a pas fonctionné pour moi:
Essayez:
cela a fonctionné pour moi!
la source
Si tout le reste échoue, vérifiez votre code pour les erreurs de syntaxe, en particulier sur
index.html
ou sur des parties de votre code que vous avez récemment modifiées juste avant que cette mise à jour automatique ne soit interrompue. Les erreurs de syntaxe casseront cette fonctionnalité de mise à jour automatique dans Angular.Dans mon cas, j'avais plusieurs projets ouverts dans des fenêtres VS Code séparées. Sur tous mes autres projets, a
ng serve
fonctionné comme prévu: il est mis à jour automatiquement lors de l'enregistrement. Mais sur un projet, il faudrait une actualisation manuelle pour mettre à jour. Cela a fini par être parce que j'avais des commentaires html en dehors de la zone HTML définie du modèle (donc, les commentaires HTML sont venus avant<!doctype html>
. Donc c'était invalide bc c'est la syntaxe HTML en dehors d'une zone HTML.J'ai effacé les commentaires et bam, la mise à jour automatique a recommencé à fonctionner (après un autre rafraîchissement manuel).
Alors parcourez
index.html
ou d'autres parties de votre code que vous avez récemment modifiées avant que cela ne soit cassé et une par une, découpez les parties fragmentaires, faites une actualisation dans le navigateur, puis revenez à VS Code et apportez une modification, enregistrez et voyez si elle se met à jour automatiquement .la source
@Input()
, mais l'attribut était vide, comme ceci:[myInput]=""
. En le remplissant avec une valeur restauréeng serve
, aucune actualisation manuelle n'est requise.J'ai découvert que le dossier dist / dans le projet appartenait à root. C'est pourquoi
sudo ng serve
voit les changements quandng serve
ne le fait pas.J'ai supprimé le dossier dist /
sudo rm -R dist/
et le reconstruire en tant qu'utilisateur actuel en démarrant le serveur de développementng serve
et tout a fonctionné à nouveau.la source
J'avais ce problème sur une nouvelle installation Linux Ubuntu et j'ai remarqué que j'obtenais une erreur concernant `` trop d'observateurs pour la limite '' dans VSCode en même temps. J'ai suivi les instructions pour le réparer dans VSCode et cela a également résolu le problème avec ng watch. Plus d'informations ici https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc
J'ai remarqué des gens qui suggéraient
sudo
de faire la montre. C'est un jeu dangereux, vous donnez aux packages npm un accès root à votre système. Si vos autorisations sont correctes, mon problème pourrait être votre solution puisque la limite est par utilisateur, et en exécutant en tant que sudo, vous exécutez en tant que root au lieu de votre utilisateur actuel qui est au-delà de la limite (exécutez une montre lourde ide comme vscode ou atom sur ). Si, pour une raison quelconque, vous avez les mauvaises autorisations, définissez-les correctement sur votre utilisateur / groupe avecchown
.la source
chown
au lieu de courirng serve
avecsudo
, ce qui devrait être évité par tous les moyens!J'ai eu le même problème, l'utilisation
sudo ng serve
semblait "résoudre" le problème de manière insatisfaisante. L'utilisationsudo
n'est pas satisfaisante IMO.J'ai vérifié mon compte INotify par rapport à ma limite par défaut (8192) en utilisant:
lsof | grep inotify | wc -l
La valeur renvoyée par la commande ci-dessus était bien inférieure à la limite. La solution INotify ne semblait donc pas s'appliquer à mon problème.J'ai également vérifié les autorisations et la propriété, les deux semblaient ok, comparables à un autre projet qui a fonctionné.
Par frustration, j'ai redémarré VS Code. Fondamentalement, j'ai fermé toutes les instances, j'ai eu deux en cours d'exécution et les deux ont rouvert après quoi le problème a disparu.
Je me penche vers un bug possible quelque part. Ceci est quelque chose à considérer avant de transformer votre système à l'envers. Heureusement / Malheureusement, ce problème ne s'est pas reproduit, je vais creuser plus profondément si c'est le cas.
la source
Vous pouvez essayer ceci aussi.
la source
Je ne recommande pas de modifier les paramètres SO. J'ai rencontré des problèmes (de décalage) après avoir modifié le paramètre fs.inotify.max_user_watches car vous aurez d'autres services en cours d'exécution ...
Le "ng serve --poll = 2000" est une bonne solution mais vous oublierez probablement ce paramètre ...
Enquête: https://github.com/angular/angular-cli/wiki/angular-cli J'avais fait la solution suivante.
Changement de angular.json avec le paramètre poll
Fonctionne sur ma machine: D
la source
npm run ng serve -- --poll=2000
. Ce n'est pas aussi agréable que la détection de changement de fichier, mais fonctionne simplement sur ma machine (version d'entreprise d'Ubuntu 18.04). J'ai mis max_user_watches à 524288, mais jeng serve
n'arrive toujours pas à détecter les changements après un certain temps. J'ai mieux à faire que d'enquêter sur cela, donc cette solution est exactement ce dont j'ai besoin.Faire la
sudo ng serve
commande est une mauvaise pratique. Vous devez modifier l'npm
autorisation de sorte qu'à chaque fois, si vous devez en installer,npm packages
vous n'ayez pas à les utilisersudo
.Ce lien peut résoudre comment modifier l'autorisation npm pour l'utilisateur actuel et après avoir suivi ces étapes après avoir défini l'autorisation npm, vous pouvez supprimer le
node_modules
dossier de votre répertoire de projet et utilisernpm install
. Une fois l'installation des packages terminée, vous pouvez exécuterng serve
et vous n'avez pas à le faire àsudo ng serve
chaque fois que vous souhaitez exécuter votre projet angulaire.la source
pour fenêtre -
Pour Linux -
la source
Ma réponse peut ne pas être utile. mais je recherche cette question à cause de cela.
Après avoir acheté un nouvel ordinateur, j'oublie de définir la sauvegarde automatique dans l'éditeur. Par conséquent, le code reste inchangé.
la source
Je voudrais laisser mon cas ici, juste pour référence. Dans mon cas, le problème concernait les autorisations système. J'ai utilisé un dossier partagé dans une machine virtuelle comme dépôt. Je n'avais aucun autre message comme l'autorisation refusée ou quelque chose comme ça. J'ai tout essayé, puis j'ai réalisé que j'utilisais un lecteur réseau.
la source
Le redémarrage du serveur a fonctionné pour moi.
la source
Donner l'autorisation complète pour le dossier du projet a fonctionné pour moi
la source
Dans mon cas sur Mac, cela a été corrigé en accordant une autorisation de lecture / écriture à l'utilisateur connecté à / usr / local / lib
la source