134 votes

ng ne détecte pas automatiquement les modifications de fichiers

Je dois exécuter ng serve chaque fois que des modifications sont apportées aux fichiers source. Aucune erreur ne se produit 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
 

164voto

planet_hunter Points 1556

La plupart du temps sous Linux, ng serve --watch ou ng build --watch ne fonctionne pas si le répertoire ne dispose pas des autorisations suffisantes.

La solution consiste à fournir les autorisations nécessaires ou à utiliser sudo place.

MISE À JOUR

L'indicateur d'observation dans ng serve est en réalité redondant car il s'agit de l'option par défaut. Nous remercions @Zaphoid d'avoir signalé l'erreur.

149voto

 ng serve --poll=2000
 

Fonctionne bien sous Linux et Windows

84voto

Muhammad Altabba Points 1269

Considérer que, lorsqu'un grand nombre de fichiers, il y a une Limite à INotify Montres sur Linux. L'augmentation de la montres de limite à 512K, par exemple, peut résoudre ce problème.

sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl -p --system

Notez que la précédente provoque un changement de la mémoire que vous perdrez après le redémarrage.

Toutefois, vous pouvez le rendre persistant, par l'exécution de:

echo fs.inotify.max_user_watches=524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system

Comme 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-of-inotify-watchers

26voto

chintan kotadiya Points 633

En effet, le système qui détecte les modifications ne peut pas gérer autant de contrôles par défaut.

Et la solution consiste à change the amount of watches qu’elle peut gérer (le nombre maximum de fichiers qui seront dans le projet) vous devez run this command :

 echo 65536 | sudo tee -a /proc/sys/fs/inotify/max_user_watches
 

Le problème avec inotify est de réinitialiser ce compteur chaque fois que vous redémarrez votre ordinateur.

18voto

Bijay Pal Points 141

Dans votre projet, le dossier dist est propre à la racine

Essayez d'utiliser sudo ng serve au lieu de ng 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 sous Linux. Donc, augmenter la limite de montres

 //When live server not work in linux

sudo sysctl fs.inotify.max_user_watches=524288
sudo sysctl -p --system

ng serve //You can also do sudo **ng serve**
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X