Estou tentando descobrir por que meu aplicativo angular 2 está parado ao mostrar Carregando ... ao executar no IE 11.
Seguindo a sugestão de alguém, eu tentei esse desentupidor, publicado por alguém no estouro de pilha, no Chrome e no IE 11. Funciona bem no Chrome, mas falha no IE 11. O mesmo erro persistiu ao dizer "Carregando ..."
O plunker é: https://plnkr.co/edit/6zVFbrH5yohwc714gBbk?p=preview
<!DOCTYPE html>
<html>
<head>
<script>document.write('<base href="' + document.location + '" />');</script>
<title>Router Sample</title>
<link rel="stylesheet" href="style.css">
<script src="https://cdnjs.cloudflare.com/ajax/libs/es6-shim/0.34.2/es6-shim.min.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.1/angular2-polyfills.js"></script>
<script src="https://code.angularjs.org/tools/system.js"></script>
<script src="https://code.angularjs.org/tools/typescript.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.1/Rx.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.1/angular2.dev.js"></script>
<script src="https://code.angularjs.org/2.0.0-beta.1/http.dev.js"></script>
<script>
System.config({
transpiler: 'typescript',
typescriptOptions: { emitDecoratorMetadata: true },
packages: {'src': {defaultExtension: 'ts'}}
});
System.import('src/boot')
.then(null, console.error.bind(console));
</script>
</head>
<body>
<my-app>loading...</my-app>
</body>
</html>
Alguém tem alguma idéia de por que o IE 11 falha ao executar o aplicativo angular 2?
Obrigado!
angular
typescript
internet-explorer
Pat Bone Triturador Laplante
fonte
fonte
Respostas:
A versão mais recente do
angular
é configurada apenas para navegadores sempre-verdes por padrão ...Consulte aqui para obter mais informações sobre o suporte ao navegador, além de uma lista de polyfills sugeridos para navegadores específicos. https://angular.io/guide/browser-support#polyfill-libs
Isso significa que você precisa habilitar manualmente os polyfills corretos para que o Angular funcione no IE11 e abaixo.
Para conseguir isso, entre em
polyfills.ts
(nasrc
pasta por padrão) e descomente as seguintes importações:Observe que o comentário está literalmente no arquivo, portanto, é fácil encontrá-lo.
Se você ainda está tendo problemas, você pode voltar a
target
propriedade paraes5
emtsconfig.json
como@MikeDub
sugerido. O que isso faz é alterar a saída de compilação de quaisqueres6
definições paraes5
definições. Por exemplo, funções de seta gorda (()=>{}
) serão compiladas em funções anônimas (function(){}
). Você pode encontrar uma lista dos navegadores suportados pelo es6 aqui .Notas
• Nos comentários, fui perguntado
@jackOfAll
se os polyfills do IE11 estão carregados, mesmo que o usuário esteja em um navegador sempre verde que não precise deles. A resposta é: sim, eles são! A inclusão dos polyfills IE11 levará seu arquivo de polyfill de~162KB
até~258KB
8 de agosto de 17. Eu investi na tentativa de resolver isso, no entanto, não parece possível no momento.• Se você estiver recebendo erros no IE10 e abaixo, entre em você
package.json
e faça o downgradewebpack-dev-server
para2.7.1
especificamente. Versões maiores que isso não são mais compatíveis com versões "mais antigas" do IE.fonte
Eu tinha exatamente o mesmo problema e nenhuma das soluções funcionou para mim. Em vez disso, adicione a seguinte linha no (homepage) .html sob a correção
<head>
.fonte
Encontrei esta questão hoje. Encontrei uma solução no GitHub que não requer a instalação de uma versão posterior do beta.
Adicione o seguinte script ao seu html:
Isso resolveu o problema para mim. Para obter mais detalhes, você pode acompanhar a questão do github aqui: https://github.com/angular/angular/issues/7144
fonte
Em fevereiro de 2017
Usando um projeto Angular-Cli , todas as linhas no
polyfills.ts
arquivo já estavam descomentadas, portanto todos os polyfills já estavam sendo utilizados.Encontrei esta solução aqui para corrigir meu problema.
Para resumir o link acima, o IE não suporta funções lambda arrow / fat arrow, que são um recurso do es6 . ( Isso ocorre se polyfills.ts não funcionar para você ).
Solução : você precisa segmentar es5 para que ele seja executado em qualquer versão do IE. O suporte para isso foi introduzido apenas no novo Edge Browser da Microsoft.
Isso é encontrado em
src/tsconfig.json
:fonte
.ts
arquivos do uso da seta gorda para funções anon. Eu acho que você deve cortar uma citação desse link sobre como a saída do compilador é diferente se você alterar o destino do script de ecma que daqui em diante atenua o problema.fonte
Para mim, com o iexplorer 11 e o Angular 2, corrigi todos os problemas acima, fazendo duas coisas:
em index.html adicione:
no comentário src \ polyfills.ts :
fonte
ERROR Error: Uncaught (in promise): TypeError: Object doesn't support property or method 'setPrototypeOf' at EmptyError (http://localhost:4200/vendor.js:102653:9)
Install npm Pacakages Observe que existem alguns comandos de instalação do npm nos comentários. Se você estiver usando uma versão inicial do Angular CLI, também poderá haver um terceiro. Para as versões 7, 6 e 1.7 da CLI Angular, é necessário executar:
npm install --save classlist.js
npm install --save web-animations-js
agora abra o IE e processe seu aplicativo e verifique :)
fonte
Em setembro de 2017 (versão do nó = v6.11.3, versão npm = 3.10.10), foi isso que funcionou para mim (obrigado @Zze):
Editar
polyfills.ts
e remova o comentário das importações necessárias para o IE11.Mais precisamente, edite
polyfills.ts
(localizado nasrc
pasta por padrão) e apenas remova o comentário de todas as linhas necessárias para o IE11 (os comentários dentro do arquivo explicam exatamente quais importações são necessárias para executar no IE11).Um pequeno aviso: preste atenção ao descomentar as linhas de
classlist.js
eweb-animations-js
. Essas linhas comentadas têm um comentário específico cada: você deve executar os comandos npm associados antes de descomentá-los ou o processamento do polyfills.ts será interrompido.Como uma explicação, os polyfills são trechos de código que implementam um recurso em um navegador da Web que não o suporta. É por isso que, na configuração padrão do polyfills.ts, apenas um conjunto mínimo de importações está ativo (porque está direcionado aos chamados navegadores "sempre verdes"; as últimas versões dos navegadores que se atualizam automaticamente ).
fonte
EDIT 2018/05/15 : Isso pode ser alcançado com uma meta tag ; adicione essa tag ao seu index.html e desconsidere esta postagem.
Esta não é uma resposta completa para a pergunta (para obter a resposta técnica, consulte a resposta de @ Zze acima ), mas há uma etapa importante que precisa ser adicionada:
MODO DE COMPATIBILIDADE
Mesmo com os polyfills apropriados, ainda há problemas com a execução de aplicativos Angular 2+ usando os polyfills no IE11. Se você estiver executando o site em um host da intranet (por exemplo, se estiver testando em http: // localhost ou outro nome de domínio local mapeado), acesse as configurações do Modo de Exibição de Compatibilidade e desmarque "Exibir sites da intranet no Modo de Exibição de Compatibilidade", já que o Modo de Exibição de Compatibilidade do IE11 quebra algumas das convenções incluídas nos polyfills ES5 para Angular.
fonte
Eu tenho um aplicativo Angular4, mesmo para mim também não estava funcionando no navegador IE11, fiz abaixo as alterações, agora está funcionando corretamente. Basta adicionar o código abaixo no arquivo index.html
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Você só precisa descomentar estas linhas abaixo do arquivo polyfills.ts
Estas duas etapas acima resolverão o seu problema. Informe-me se houver alguma coisa lá. Obrigado!!!
fonte
Se você ainda tiver problemas para que nem todas as funções JavaScript estejam funcionando, adicione esta linha em seus polyfills. Ele corrige o método 'values' ausente:
E essa linha corrige o método 'inclui' ausente:
fonte
Eu estava com o mesmo problema: se você ativou Exibir sites da intranet no Modo de exibição de compatibilidade, o polyfills.ts não funcionará, você ainda precisará adicionar a seguinte linha, conforme informado.
fonte
mudando
tsconfig.json
resolveu meu problema
fonte
O que funcionou para mim é que segui as etapas a seguir para melhorar o desempenho de meus aplicativos no IE 11 1.) No arquivo Index.html, adicione as seguintes CDNs
2.) No arquivo polyfills.ts e adicione a seguinte importação:
fonte
fonte
Se nenhuma das outras soluções funcionar para você, vale a pena investigar a origem do problema. Pode ser que um módulo npm insira diretamente o código ES6, que não pode ser transpilado.
No meu caso, eu tive o
SCRIPT1002: Erro de sintaxe vendor.js (114536,27) na seguinte linha:
Eu procurei na pasta node_modules e descobri de qual arquivo a linha veio. Aconteceu que o culpado era punycode.js que na versão 2.1.0 usa ES6 diretamente.
Depois de fazer o downgrade para a 1.4.1, que usa o ES5, o problema foi resolvido.
fonte
Como resolver esse problema no Angular8
Remova o comentário polyfills.ts
import 'classlist.js';
eimport 'web-animations-js';
instale duas dependências usandonpm install --save classlist.js
enpm install --save web-animations-js
.atualizar
tsconfig.json
com"target":"es5",
depois
ng serve
execute o aplicativo e abra no IE, ele funcionaráfonte
Remova o comentário da seção IE no src / polyfill.js,
/ ** O IE10 e o IE11 requerem o seguinte para suporte ao NgClass em elementos SVG * /
import 'classlist.js';
Se houver algum erro de compilação por falta de pacote,
npm install classlist.js --save-exact
Certifique-se de incluir a linha abaixo para definir o modo de documento padrão do IE. Caso contrário, ele será aberto na versão 7
fonte
Eu tentei todas as soluções neste segmento, bem como muitos outros, sem sucesso. O que acabou corrigindo isso para mim foi atualizar todos os pacotes do meu projeto, incluindo alterações de versão MAJOR. Assim:
É isso aí. Eu gostaria de poder identificar qual biblioteca foi a culpada. O erro real que eu estava recebendo era "Erro de sintaxe" no vendor.js no Angular 6.
fonte
O Angular 9 pronto para uso deve funcionar absolutamente bem no IE11 agora.
Tentei todas as sugestões listadas aqui e nenhuma delas funcionou. No entanto, consegui rastreá-lo para uma biblioteca específica em que estava importando
app.module
(ZXingScannerModule
para ser mais preciso). Se seu aplicativo falhar no IE11 na primeira página, tente remover as bibliotecas uma de cada vez e faça o check-in no IE11 - isso foi completamente esquecido em todos os meus erros de aviso de criação. Se você achar que é esse o caso, considere compartimentar a área do seu site que usa essa biblioteca como um módulo carregado preguiçosamente.fonte