J'essaie de comprendre pourquoi mon application angular 2 est bloquée sur l'affichage de Chargement ... lors de l'exécution dans IE 11.
Suite à la suggestion de quelqu'un, j'ai essayé ce plunker, posté par quelqu'un sur le débordement de pile, sur Chrome et IE 11. Fonctionne bien sur Chrome, mais échoue sur IE 11. Même erreur, coincé en disant "Chargement ..."
Le plunker est: 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>
Quelqu'un a-t-il une idée de la raison pour laquelle IE 11 ne parvient pas à exécuter l'application angular 2?
Je vous remercie!
angular
typescript
internet-explorer
Pat Bone Crusher Laplante
la source
la source
Réponses:
La dernière version de
angular
n'est configurée que pour les navigateurs à feuilles persistantes par défaut ...Voir ici pour plus d'informations sur la prise en charge des navigateurs ainsi qu'une liste de polyfills suggérés pour des navigateurs spécifiques. https://angular.io/guide/browser-support#polyfill-libs
Cela signifie que vous devez activer manuellement les polyfills corrects pour que Angular fonctionne dans IE11 et les versions antérieures.
Pour ce faire, allez dans
polyfills.ts
(dans lesrc
dossier par défaut) et décommentez simplement les importations suivantes:Notez que le commentaire est littéralement dans le fichier, donc c'est facile à trouver.
Si vous rencontrez toujours des problèmes, vous pouvez rétrograder la
target
propriétées5
entsconfig.json
comme@MikeDub
suggéré. Cela change la sortie de compilation de toutes leses6
définitions enes5
définitions. Par exemple, les fonctions de grosse flèche (()=>{}
) seront compilées en fonctions anonymes (function(){}
). Vous pouvez trouver une liste des navigateurs pris en charge par es6 ici .Remarques
• On m'a demandé dans les commentaires
@jackOfAll
si les polyfills IE11 sont chargés même si l'utilisateur est dans un navigateur à feuilles persistantes qui n'en a pas besoin. La réponse est, oui, ils le sont! L'inclusion des polyfills IE11 prendra votre fichier polyfill du au~162KB
à~258KB
partir du 8 août 17. J'ai investi pour essayer de résoudre ce problème, mais cela ne semble pas possible pour le moment.• Si vous obtenez des erreurs dans IE10 et ci - dessous, allez dans vous
package.json
et downgradewebpack-dev-server
à2.7.1
particulier. Les versions supérieures à cela ne prennent plus en charge les «anciennes» versions d'IE.la source
J'ai eu exactement le même problème et aucune des solutions n'a fonctionné pour moi. Au lieu de cela, l'ajout de la ligne suivante dans le (page d'accueil) .html sous
<head>
corrigé.la source
J'ai rencontré ce problème aujourd'hui. J'ai trouvé une solution sur GitHub qui ne nécessite pas de passer à une version ultérieure de la bêta.
Ajoutez le script suivant à votre html:
Cela a résolu le problème pour moi. Pour plus de détails, vous pouvez suivre le problème github ici: https://github.com/angular/angular/issues/7144
la source
À partir de février 2017
En utilisant un projet Angular-Cli , toutes les lignes du
polyfills.ts
fichier étaient déjà décommentées, donc tous les polyfills étaient déjà utilisés.J'ai trouvé cette solution ici pour résoudre mon problème.
Pour résumer le lien ci-dessus, IE ne prend pas en charge les fonctions de flèche lambda / grosse flèche qui sont une fonctionnalité d' es6 . ( C'est si polyfills.ts ne fonctionne pas pour vous ).
Solution : vous devez cibler es5 pour qu'il s'exécute dans toutes les versions d'IE, la prise en charge de cela n'a été introduite que dans le nouveau navigateur Edge de Microsoft.
Cela se trouve sous
src/tsconfig.json
:la source
.ts
fichiers en passant d'une grosse flèche à une fonction anon. Je pense que vous devriez extraire une citation de ce lien sur la façon dont la sortie du compilateur est différente si vous modifiez la cible du script ecma, ce qui atténue désormais le problème.la source
Pour moi, avec iexplorer 11 et Angular 2, j'ai résolu tous les problèmes ci-dessus en faisant 2 choses:
dans index.html ajoutez:
dans src \ polyfills.ts décommenter:
la source
ERROR Error: Uncaught (in promise): TypeError: Object doesn't support property or method 'setPrototypeOf' at EmptyError (http://localhost:4200/vendor.js:102653:9)
Installer npm Pacakages Remarquez qu'il y a des commandes d'installation npm dans les commentaires. Si vous utilisez une première version de Angular CLI, il peut également y en avoir une troisième. Pour les versions 7, 6 et 1.7 de la CLI angulaire, vous devez exécuter:
npm install --save classlist.js
npm install --save web-animations-js
ouvrez maintenant IE et effectuez le rendu de votre application et vérifiez :)
la source
Depuis septembre 2017 (version du nœud = v6.11.3, version npm = 3.10.10), voici ce qui a fonctionné pour moi (merci @Zze):
Modifiez
polyfills.ts
et supprimez les commentaires des importations nécessaires pour IE11.Plus précisément, éditez
polyfills.ts
(situé dans lesrc
dossier par défaut) et décommentez simplement toutes les lignes requises pour IE11 (les commentaires à l'intérieur du fichier expliquent exactement quelles importations sont nécessaires pour s'exécuter sur IE11).Un petit avertissement: faites attention lorsque vous décommentez les lignes pour
classlist.js
etweb-animations-js
. Ces lignes commentées ont chacune un commentaire spécifique: vous devez exécuter les commandes npm associées avant de les décommenter ou le traitement de polyfills.ts sera interrompu.En guise d'explication, les polyfills sont des morceaux de code qui implémentent une fonctionnalité sur un navigateur Web qui ne la prend pas en charge. C'est pourquoi, dans la configuration par défaut de polyfills.ts, seul un ensemble minimal d'importations est actif (car il vise les navigateurs dits "persistants"; les dernières versions de navigateurs qui se mettent à jour automatiquement ).
la source
EDIT 2018/05/15 : Ceci peut être réalisé avec une balise meta ; veuillez ajouter cette balise à votre index.html et ne pas tenir compte de ce message.
Ce n'est pas une réponse complète à la question (pour la réponse technique, veuillez vous référer à la réponse de @ Zze ci-dessus ), mais il y a une étape importante qui doit être ajoutée:
LE MODE DE COMPATIBILITÉ
Même avec les polyfills appropriés en place, il y a toujours des problèmes avec l'exécution des applications Angular 2+ en utilisant les polyfills sur IE11. Si vous exécutez le site depuis un hôte intranet (c'est-à-dire si vous le testez sur http: // localhost ou un autre nom de domaine local mappé), vous devez accéder aux paramètres d'affichage de compatibilité et décocher "Afficher les sites intranet dans l'affichage de compatibilité", puisque la vue de compatibilité d'IE11 enfreint quelques-unes des conventions incluses dans les polyfills ES5 pour Angular.
la source
J'ai une application Angular4, même pour moi aussi cela ne fonctionnait pas dans le navigateur IE11, j'ai fait les modifications ci-dessous, maintenant cela fonctionne correctement. Ajoutez simplement le code ci-dessous dans le fichier index.html
<meta http-equiv="X-UA-Compatible" content="IE=edge" />
Il vous suffit de décommenter ces lignes ci-dessous du fichier polyfills.ts
Ces 2 étapes ci-dessus résoudront votre problème, veuillez me faire savoir si quelque chose sera là. Merci!!!
la source
Si vous avez encore des problèmes que toutes les fonctions JavaScript ne fonctionnent pas, ajoutez cette ligne dans vos polyfills. Il corrige la méthode des 'valeurs' manquantes:
Et cette ligne corrige la méthode manquante 'includes':
la source
J'avais le même problème, si vous avez activé Afficher les sites intranet dans la vue de compatibilité, le polyfills.ts ne fonctionnera pas, vous devez toujours ajouter la ligne suivante comme cela a été dit.
la source
en changeant
tsconfig.json
a résolu mon problème
la source
Ce qui a fonctionné pour moi, c'est que j'ai suivi les étapes suivantes pour améliorer les performances de mon application dans IE 11 1.) Dans le fichier Index.html, ajoutez les CDN suivants
2.) Dans le fichier polyfills.ts et ajoutez l'importation suivante:
la source
la source
Si aucune des autres solutions ne fonctionne pour vous, il vaut la peine de rechercher la source du problème. Il se peut qu'un module npm insère directement du code ES6, qui ne peut pas être transpilé.
Dans mon cas, j'avais le
SCRIPT1002: Erreur de syntaxe vendor.js (114536,27) à la ligne suivante:
J'ai cherché dans le dossier node_modules et j'ai trouvé de quel fichier la ligne provenait. Il s'est avéré que le coupable était punycode.js qui, dans sa version 2.1.0, utilise directement ES6.
Après l'avoir rétrogradé à 1.4.1, qui utilise ES5, le problème a été résolu.
la source
Comment résoudre ce problème dans Angular8
polyfills.ts uncomment
import 'classlist.js';
etimport 'web-animations-js';
ensuite installer deux dépendances en utilisantnpm install --save classlist.js
etnpm install --save web-animations-js
.mettre
tsconfig.json
à jour avec"target":"es5",
puis
ng serve
exécutez l'application et ouvrez dans IE, cela fonctionnerala source
Décommentez la section IE dans le src / polyfill.js,
/ ** IE10 et IE11 nécessitent les éléments suivants pour la prise en charge de NgClass sur les éléments SVG * /
import 'classlist.js';
Si une erreur de construction pour un package manquant, alors,
npm install classlist.js --save-exact
Assurez-vous d'inclure la ligne ci-dessous pour définir le mode de document IE par défaut. Sinon, il s'ouvrira dans la version 7
la source
J'ai essayé toutes les solutions de ce fil ainsi que d'autres solutions, sans succès. Ce qui a fini par résoudre ce problème pour moi a été de mettre à jour tous les packages de mon projet, y compris les changements de version MAJEURS. Alors:
C'est tout. J'aurais aimé pouvoir identifier quelle bibliothèque était le coupable. L'erreur réelle que j'obtenais était «Erreur de syntaxe» dans vendor.js dans Angular 6.
la source
Angular 9 hors de la boîte devrait fonctionner parfaitement dans IE11 maintenant.
J'ai essayé toutes les suggestions énumérées ici et aucune d'elles n'a fonctionné. Cependant, j'ai réussi à le retrouver dans une bibliothèque spécifique dans laquelle j'importais
app.module
(ZXingScannerModule
pour être précis). Si votre application échoue dans IE11 sur la première page, essayez de supprimer les bibliothèques une par une et archivez IE11 - elle a été complètement manquée dans toutes mes erreurs d'avertissement de construction. Si vous trouvez que c'est le cas, envisagez de compartimenter la zone de votre site qui utilise cette bibliothèque comme un module chargé paresseusement.la source