Como resolver problemas com Live Reload no Angular em sistemas Linux?
Tem dias que o trabalho “trava” e, por mais que a gente procure, a solução parece “se esconder”. Ou será que estamos procurando por ela no lugar errado? Se você está editando seus códigos no projeto Angular e o live reload não está funcionando, é possível que o seu ambiente de trabalho seja alguma distribuição do sistema Linux, correto? Se a sua resposta é “sim”, a questão (e a solução) é mais simples do que você imagina.
O problema não está na plataforma Angular e muito menos em seu projeto. Provavelmente, são algumas métricas no ambiente Linux que precisamos mudar. E não adianta forçar a execução do projeto utilizando o parâmetro “–liveReload“, pois não irá funcionar, já que esta opção é ativada por padrão quando você a executa no “ng serve“, ou seja, “dá na mesma”!
Como resolver?
Direto para a solução (mais abaixo eu explico a origem do problema): abra o seu terminal do Linux e execute esses dois comandos:
sudo sysctl fs.inotify.max_user_watches=524288 sudo sysctl -p --system
Pronto! Tudo voltou a funcionar! 🙂 Agora, com o “ng serve” em execução, ao salvar qualquer arquivo, o live reload vai funcionar e sua página será atualizada normalmente no navegador. Gostou? Compartilhe a solução.
Por que isso acontece?
Para sermos objetivos, faço um resumo do resumo, ok? Os sistemas Linux possuem um subsistema no Kernel chamado Inotify (inode notify), o qual atua como uma extensão do controle do sistema de arquivos, em que a sua função é notificar qualquer tipo de alteração neles – o recurso é nativo do Linux. E estas alterações são disponibilizadas por meio de API para outros sistemas.
Então, para não restar dúvidas, o problema estava no Inotify Watch, que age diretamente no monitoramento (em tempo real) do sistema de arquivos do Linux. A questão é que existe um limite padrão na quantidade de “monitoramentos” simultâneos. Este limite precisa ser alterado em algumas distribuições para garantir o bom funcionamento do Angular. Ah! Não se preocupe, pois o seu sistema não vai ficar mais lento por conta dessa alteração. Saiba mais aqui. Bom trabalho! 😉