Porque nao da certo abrir o arquivo html diretamente de uma aplicacao angular

Ola pessoal, se eu crio um arquivo html e um javascript com um codigo basico, tipo so para exibir um alert, e no html eu coloco uma referencia do arquivo javascript e clico duas vezes no arquivo html para abrir no navegador o codigo funciona.

agora se eu tenho uma aplicacao angular e gero o build dela e clico duas vezes do arquivo html o conteudo nao è carregado no navegador. Eu preciso usar o live-server ou http-server para fazer rodar.

A minha pergunta è: porque isso acontece? porque o index.html gerado pelo build do angular nao è carregado se abro o arquivo direto no navegador sem usar o live-server ou http-server?

Sem mostrar o código fica mais difícil. Mas provavelmente o código executado está dependente de um servidor http.

O browser pode abrir um arquivo html estático e executar js nessa página aberta, mas não faz requisicao http pra pasta, só para servidor, nem que seja pelo menos em localhost.

1 curtida

Fica meio dificil mostrar o codigo porque mesmo um hello world no angular gera um build grande com varios arquivos, e a minha duvida nao se refere a um comando especifico.

Entendi, entao no caso do html estatico o navegador ele so faz requisicoes externas, se precisar fazer uma requisicao interna ele nao consegue?

Por essas e outras que nunca uso Angular, muito overhead. Mas enfim, tem que debugar no browser e ver o erro no console.

Interna aonde? Diretamente na pasta? Realmente vai precisar disso ou vai ter um servidor? Como na realidade vai ser distribuido essa aplicação? Explique melhor seu cenário.

1 curtida

Isso acontece por motivos de segurança e é o navegador responsável por lidar com essa questão.

Quando vc acessa arquivos diretamente do file system existem limitações que te impedem de carregar uma aplicação completa e não importa que seja um app Angular ou não, se esse app estiver organizado de uma forma que infringe as regras de segurança, ele não vai funcionar como deveria.

Quando vc tem um servidor web servindo seu App, quem está gerenciando a segurança é esse servidor. Como ele tem regras, permissões de acesso e necessidades diferentes de um navegador, ele pega tudo e manda pro navegador prontinho pra ser executado.

Eu também não entendo completamente isso ainda, mas olha uma explicação nessa página:

Lê a partir do subtítulo “A web server? But I want to make games!”.

1 curtida

Essa questao de requisicao interna eu que entendi errado, esquece essa parte rs.

eu gerei um projeto em branco do angular e fiz o build dele (sem alterar uma unica linha de codigo) olha o log do console, lembrando que ao usar o live-server ou http-server para startar o projeto, ele funciona

Entendi, deu para entender melhor, Obrigado!

1 curtida

Funciona pois nesse caso está usando um servidor http.

1 curtida