Necesito ejecutar ng serve
cada 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 serve
ong build --watch
no funciona si el directorio no tiene suficientes permisos.La solución es proporcionar los permisos necesarios o utilizarlos
sudo
en su lugar.ACTUALIZAR
watch flag in
ng serve
es realmente redundante, ya que es la opción predeterminada. Gracias a @Zaphoid por señalar el error.fuente
ng serve
consudo
permisos. Ha funcionado.a+x
, pero advierto contra el uso de permisos, en lugar desudo
.sudo
es para un solo comando, mientras que cambiar los permisos los cambia para siempre, lo que parece una mayor fuga de seguridad.--watch
no 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_watches
respuesta 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 watches
que 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 serve
lugar 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 serve
y, ang build --watch
veces, 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.html
partes 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 serve
funcionó 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.html
u 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 serve
que ve los cambios cuandong serve
no.Eliminé la carpeta dist /
sudo rm -R dist/
y la reconstruí como usuario actual iniciando el servidor de desarrollong serve
y 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ó
sudo
correr 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
chown
en lugar de correrng serve
con elsudo
, lo que debe evitarse por todos los medios!Tuve el mismo problema, el uso
sudo ng serve
pareció "resolver" el problema de manera insatisfactoria. El usosudo
no es satisfactorio en mi opinión.Verifiqué mi recuento de INotify versus mi límite predeterminado (8192) usando:
lsof | grep inotify | wc -l
El 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 serve
aú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 serve
comando es una mala práctica. Tienes que cambiar elnpm
permiso para que cada vez que tengas que instalar algunonpm packages
no 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_modules
carpeta del directorio de su proyecto y usarnpm install
. Una vez completada la instalación de los paquetes, puede ejecutarng serve
y no tiene que hacerlosudo ng serve
cada 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