Preciso executar ng serve
sempre que houver alterações feitas nos arquivos de origem. Não tenho erro no 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
Respostas:
Na maioria das vezes no Linux,
ng serve
oung build --watch
não funciona se o diretório não tiver permissões suficientes.A solução é fornecer as permissões necessárias ou usar em seu
sudo
lugar.ATUALIZAR
watch flag in
ng serve
é redundante, pois é a opção padrão. Agradecemos a @Zaphoid por apontar o erro.fonte
ng serve
comsudo
permissões. Funcionou.a+x
, mas eu aviso contra o uso de permissões, ao invés desudo
.sudo
é para um único comando, ao passo que alterar as permissões as altera para sempre, o que parece um vazamento de segurança maior.--watch
não deve ser necessário, pois é um padrão, consulte angular.io/cli/serve . Então, @T. A resposta de van den Berg foi realmente mais precisa!Funcionando bem em Linux e Windows
fonte
Considere que, ao ter um grande número de arquivos, existe um Limite no INotify Watches no Linux. Portanto, aumentar o limite de relógios para 512K, por exemplo, pode resolver isso.
Observe que o anterior causa uma alteração na memória que você perderá após a reinicialização.
No entanto, você pode torná-lo persistente , executando:
Como referência, você pode verificar: https://github.com/angular/angular-cli/issues/8313#issuecomment-362728855 e https://github.com/guard/listen/wiki/Increasing-the-amount- de-inotify-watchers
fonte
cat /proc/sys/fs/inotify/max_user_watches
resposta acima é uma resposta totalmente completa, mas aqui está um link com um pouco mais de descrição confluence.jetbrains.com/display/IDEADEV/Inotify+Watches+LimitPor causa disso, o sistema que detecta mudanças não pode lidar com tantos relógios por padrão.
E a solução é para
change the amount of watches
ele aguentar (a quantidade máxima de arquivos que estarão no projeto) você deverun this command
:O problema com o inotify é zerar este contador toda vez que você reiniciar o computador.
fonte
No seu projeto, a pasta dist é propriedade do root
Tente usar em
sudo ng serve
vez deng serve
.Outra solução
Quando há um grande número de arquivos, o relógio não funciona no linux. Há um limite no INotify Watches no Linux. Aumentando o limite de relógios
fonte
Só precisa executar sudo ng serve para resolver o problema.
fonte
Isso pode ajudar se for o mesmo problema que eu tive. Tentando usar
ng serve
eng build --watch
às vezes funcionava, mas principalmente eles não estavam prestando atenção nas mudanças de código e eu pensei que tinha algo a ver com issong
.Então me lembrei de um problema que tive um tempo atrás com os relógios inotify
Eu executei isso na minha máquina Ubuntu e parece que começou e está observando as mudanças no código:
echo fs.inotify.max_user_watches = 524288 | sudo tee /etc/sysctl.d/40-max-user-watches.conf && sudo sysctl --system
o crédito vai para Scott Smith
fonte
tente isso. Se você fizer assim você não precisa disparar sempre nenhum comando Você precisa disparar apenas uma vez
fonte
Não funcionou para mim:
Experimentar :
isso funcionou para mim!
fonte
Se tudo mais falhar, verifique se há erros de sintaxe no código - principalmente no
index.html
ou partes do código que você editou recentemente, pouco antes da falha da atualização automática. Erros de sintaxe interromperão essa funcionalidade de atualização automática no Angular.No meu caso, eu tinha vários projetos abertos em janelas separadas do VS Code. Em todos os meus outros projetos,
ng serve
funcionou como esperado: ele foi atualizado automaticamente ao salvar. Mas em um projeto, seria necessária uma atualização manual para atualizar. Acabou sendo porque eu tinha comentários html fora da área HTML definida do modelo (então, os comentários HTML vieram antes<!doctype html>
. Portanto, era inválido bc sua sintaxe HTML fora de uma área HTML.Eu apaguei os comentários e bam, a atualização automática começou a funcionar novamente (depois de mais uma atualização manual).
Então, analise
index.html
ou outras partes do seu código que você editou recentemente antes de quebrar e uma a uma, corte as partes incompletas, atualize o navegador, volte ao VS Code e faça uma alteração, salve e veja se ele é atualizado automaticamente .fonte
@Input()
, mas o atributo estava em branco, como este:[myInput]=""
. Preenchendo-o com um valor restauradong serve
, nenhuma atualização manual necessária.Descobri que a pasta dist / no projeto pertencia ao root. É por isso
sudo ng serve
que vê as mudanças quandong serve
não.Eu removi a pasta dist /
sudo rm -R dist/
e reconstruí-a como usuário atual iniciando o servidor devng serve
e tudo funcionou novamente.fonte
Eu estava tendo esse problema em uma nova instalação do Linux Ubuntu e percebi que estava recebendo um erro sobre 'muitos observadores para o limite' no VSCode ao mesmo tempo. Segui as instruções para consertá-lo no VSCode e também consertou o problema com o ng watch. Mais informações aqui https://code.visualstudio.com/docs/setup/linux#_visual-studio-code-is-unable-to-watch-for-file-changes-in-this-large-workspace-error-enospc
Eu notei pessoas sugerindo
sudo
para vigiar. Este é um jogo perigoso, você está dando aos pacotes npm acesso root ao seu sistema. Se suas permissões estiverem corretas, meu problema pode ser a sua correção, já que o limite é por usuário e, executando como sudo, você está executando como root em vez de seu usuário atual que está além do limite (executando um IDE pesado de relógio como vscode ou atom em ). Se por algum motivo você tiver as permissões erradas, defina-as adequadamente para o seu usuário / grupo comchown
.fonte
chown
em vez de correrng serve
comsudo
, o que deve ser evitado por todos os meios!Eu tive o mesmo problema, usando
sudo ng serve
parecia "resolver" o problema de forma insatisfatória. O uso desudo
IMO não é satisfatório.Eu verifiquei minha contagem de INotify em relação ao meu limite padrão (8192) usando:
lsof | grep inotify | wc -l
O valor retornado pelo comando acima era bem menor que o limite. Portanto, a solução INotify não parecia se aplicar ao meu problema.Eu também verifiquei as permissões e propriedade, ambas pareciam ok, comparáveis a outro projeto que funcionou.
Frustrado, reiniciei o VS Code. Basicamente fechei todas as instâncias, tinha duas rodando e reabri ambas, após o que o problema foi embora.
Estou inclinado para um possível bug em algum lugar. Isso é algo a se considerar antes de virar o sistema do avesso. Felizmente / infelizmente, esse problema não ocorreu novamente, vou cavar mais fundo se isso acontecer.
fonte
Você também pode tentar isso.
fonte
Não recomendo alterar os parâmetros do SO. Tive alguns problemas (lag) após alterar o parâmetro fs.inotify.max_user_watches, pois você terá outros serviços em execução ...
O "ng serve --poll = 2000" é uma boa solução, mas você provavelmente vai esquecer este parâmetro ...
Investigando: https://github.com/angular/angular-cli/wiki/angular-cli Eu fiz a seguinte solução.
Alterado de angular.json com parâmetro de votação
Funciona na minha máquina: D
fonte
npm run ng serve -- --poll=2000
. Isso não é tão bom quanto a detecção de alteração de arquivo, mas apenas funciona na minha máquina (versão corporativa do Ubuntu 18.04). Eu tenho max_user_watches definido como 524288, masng serve
ainda falha ao detectar alterações depois de algum tempo. Tenho coisas melhores a fazer do que investigar isso, então essa solução é exatamente o que eu preciso.Fazer o
sudo ng serve
comando é uma prática ruim. Você tem que alterar anpm
permissão de modo que toda vez que precisar instalar alguma,npm packages
você não precise usarsudo
.Este link pode resolver como alterar a permissão npm para o usuário atual e, após seguir estas etapas, após definir a permissão npm, você pode remover a
node_modules
pasta do diretório do projeto e usarnpm install
. Após a conclusão da instalação dos pacotes, você pode executarng serve
e não precisa fazersudo ng serve
sempre que quiser executar seu projeto angular.fonte
para janela -
Para Linux -
fonte
Minha resposta pode não ser útil. mas procuro essa questão por causa disso.
Depois que comprei um novo computador, esqueci de definir o salvamento automático no editor. Portanto, o código permanece inalterado.
fonte
Gostaria de deixar meu caso aqui, apenas para referência. No meu caso, o problema estava nas permissões do sistema. Usei uma pasta compartilhada dentro de uma VM como um repo. Eu não tive nenhuma outra mensagem como permissão negada ou algo assim. Tentei de tudo e então percebi que estava usando uma unidade de rede.
fonte
Reiniciar o servidor funcionou para mim.
fonte
Dar permissão total para a pasta do projeto funcionou para mim
fonte
No meu caso no Mac, foi corrigido concedendo permissão de Leitura / Gravação ao usuário conectado em / usr / local / lib
fonte