Necesito ejecutar ng servecada vez que se realicen cambios en los archivos de origen. No tengo ningún error en la consola.
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

Respuestas:
La mayoría de las veces en Linux,
ng serveong build --watchno funciona si el directorio no tiene suficientes permisos.La solución es proporcionar los permisos necesarios o utilizarlos
sudoen su lugar.ACTUALIZAR
watch flag in
ng servees realmente redundante, ya que es la opción predeterminada. Gracias a @Zaphoid por señalar el error.fuente
ng serveconsudopermisos. Ha funcionado.a+x, pero advierto contra el uso de permisos, en lugar desudo.sudoes para un solo comando, mientras que cambiar los permisos los cambia para siempre, lo que parece una mayor fuga de seguridad.--watchno debería ser necesario, ya que es un valor predeterminado, consulte angular.io/cli/serve . Entonces @T. ¡La respuesta de van den Berg fue en realidad más precisa!Funciona bien en Linux y Windows
fuente
Tenga en cuenta que, al tener una gran cantidad de archivos, existe un límite en INotify Watches en Linux. Entonces, aumentar el límite de relojes a 512K, por ejemplo, puede resolver esto.
Tenga en cuenta que lo anterior provoca un cambio en la memoria que perderá después de reiniciar.
Sin embargo, puede hacerlo persistente ejecutando:
Como referencia, puede consultar: https://github.com/angular/angular-cli/issues/8313#issuecomment-362728855 y https://github.com/guard/listen/wiki/Increasing-the-amount- de-inotificar-observadores
fuente
cat /proc/sys/fs/inotify/max_user_watchesrespuesta anterior es una respuesta totalmente completa, pero aquí hay un enlace con un poco más de descripción confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+LimitPor eso, el sistema que detecta cambios no puede manejar tantos relojes por defecto.
Y la solución es
change the amount of watchesque puede manejar (la cantidad máxima de archivos que habrá en el proyecto) deberun this command:El problema con inotify es restablecer este contador cada vez que reinicia su computadora.
fuente
En su proyecto, la carpeta dist es propiedad de root
Intente usar en
sudo ng servelugar deng serve.Otra solución
Cuando hay una gran cantidad de archivos, el reloj no funciona en Linux. Hay un límite en INotify Watches en Linux. Entonces aumentando el límite de relojes
fuente
Solo necesita ejecutar sudo ng serve para resolver el problema.
fuente
Esto puede ayudar si es el mismo problema que tuve. Intenté usarlo
ng servey, ang build --watchveces, funcionó, pero en su mayoría no estaban atentos a los cambios de código y pensé que tenía algo que ver con esong.Entonces recordé un problema que tuve hace un tiempo con los relojes inotify
Ejecuté esto en mi máquina Ubuntu y parece haberse activado y viendo cambios de código:
echo fs.inotify.max_user_watches = 524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
el crédito es para Scott Smith
fuente
prueba esto. Si lo hace así, no necesita disparar siempre ningún comando.Necesita disparar solo una vez.
fuente
No funcionó para mí:
Tratar :
esto funcionó para mí!
fuente
Si todo lo demás falla, verifique su código en busca de errores de sintaxis, particularmente en
index.htmlpartes de su código que editó recientemente justo antes de que se rompiera esta actualización automática. Los errores de sintaxis romperán esta funcionalidad de actualización automática en Angular.En mi caso, tenía varios proyectos abiertos en ventanas de VS Code separadas. En todos mis otros proyectos,
ng servefuncionó como se esperaba: se actualizó automáticamente al guardar. Pero en un proyecto, requeriría una actualización manual para actualizar. Terminó siendo porque tenía comentarios html fuera del área HTML definida de la plantilla (por lo tanto, los comentarios HTML vinieron antes<!doctype html>. Por lo tanto, no era válido porque su sintaxis HTML está fuera de un área HTML.Borré los comentarios y bam, la actualización automática comenzó a funcionar nuevamente (después de una actualización manual más).
Así que revise
index.htmlu otras partes de su código que editó recientemente antes de que esto se rompiera y una por una, corte las partes incompletas, actualice el navegador, luego regrese a VS Code y haga un cambio, guarde y vea si se actualiza automáticamente .fuente
@Input(), pero el atributo estaba en blanco, como esto:[myInput]="". Llenarlo con un valor restauradong serve, no requiere actualización manual.Descubrí que la carpeta dist / en el proyecto era propiedad de root. Es por eso
sudo ng serveque ve los cambios cuandong serveno.Eliminé la carpeta dist /
sudo rm -R dist/y la reconstruí como usuario actual iniciando el servidor de desarrollong servey todo funcionó nuevamente.fuente
Tenía este problema en una nueva instalación de Linux Ubuntu y noté que recibía un error sobre 'demasiados observadores para el límite' en VSCode al mismo tiempo. Seguí las instrucciones para solucionarlo en VSCode y también solucionó el problema con ng watch. Más información aquí https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc
Me di cuenta de que la gente sugirió
sudocorrer a vigilar. Este es un juego peligroso, le está dando a los paquetes npm acceso root a su sistema. Si sus permisos son correctos, mi problema podría ser su solución, ya que el límite es por usuario, y al ejecutar sudo, se está ejecutando como root en lugar de su usuario actual que ha superado el límite (ejecutando un ide pesado como vscode o atom en ). Si por alguna razón tiene los permisos incorrectos, configúrelos correctamente para su usuario / grupo conchown.fuente
chownen lugar de correrng servecon elsudo, lo que debe evitarse por todos los medios!Tuve el mismo problema, el uso
sudo ng servepareció "resolver" el problema de manera insatisfactoria. El usosudono es satisfactorio en mi opinión.Verifiqué mi recuento de INotify versus mi límite predeterminado (8192) usando:
lsof | grep inotify | wc -lEl valor devuelto por el comando anterior era mucho menor que el límite. Entonces, la solución INotify no pareció aplicarse a mi problema.También verifiqué los permisos y la propiedad, ambos parecían estar bien, comparables a otro proyecto que funcionó.
Frustrado reinicié VS Code. Básicamente, cerré todas las instancias, tenía dos en ejecución y las volví a abrir, después de lo cual el problema desapareció.
Me estoy inclinando hacia un posible error en alguna parte. Esto es algo a considerar antes de darle la vuelta a su sistema. Afortunadamente / Desafortunadamente, este problema no ha vuelto a ocurrir, profundizaré más si lo hace.
fuente
Puedes probar esto también.
fuente
No recomiendo cambiar los parámetros de SO. He experimentado algunos problemas (lag) después de cambiar el parámetro fs.inotify.max_user_watches ya que tendrá otros servicios en ejecución ...
El "ng serve --poll = 2000" es una buena solución pero probablemente olvide este parámetro ...
Investigando: https://github.com/angular/angular-cli/wiki/angular-cli Hice la siguiente solución.
Se cambió de angular.json con el parámetro de encuesta.
Funciona en mi máquina: D
fuente
npm run ng serve -- --poll=2000. Esto no es tan bueno como la detección de cambios de archivos, pero simplemente funciona en mi máquina (versión corporativa de Ubuntu 18.04). Tengo max_user_watches configurado en 524288, perong serveaún no puedo detectar cambios después de un tiempo. Tengo mejores cosas que hacer que investigar esto, así que esta solución es justo lo que necesito.Hacer el
sudo ng servecomando es una mala práctica. Tienes que cambiar elnpmpermiso para que cada vez que tengas que instalar algunonpm packagesno tengas que usarlosudo.Este enlace puede resolver cómo cambiar el permiso npm para el usuario actual y después de seguir estos pasos después de configurar el permiso npm, puede eliminar la
node_modulescarpeta del directorio de su proyecto y usarnpm install. Una vez completada la instalación de los paquetes, puede ejecutarng servey no tiene que hacerlosudo ng servecada vez que desee ejecutar su proyecto angular.fuente
para ventana -
Para Linux -
fuente
Mi respuesta puede no ser útil. pero busco esta pregunta por esto.
Después de comprar una computadora nueva, olvido configurar el guardado automático en el editor. Por lo tanto, el código se mantiene sin cambios.
fuente
Me gustaría dejar mi caso aquí, solo como referencia. En mi caso, el problema estaba en los permisos del sistema. Usé una carpeta compartida dentro de una máquina virtual como repositorio. No tenía otro mensaje como permiso denegado o algo así. Probé todo y luego me di cuenta de que estaba usando una unidad de red.
fuente
Reiniciar el servidor funcionó para mí.
fuente
Dar permiso completo para la carpeta del proyecto funcionó para mí
fuente
En mi caso en Mac, se solucionó otorgando permiso de lectura / escritura al usuario que inició sesión en / usr / local / lib
fuente