3
votes

Internet Explorer et Angular 6 ERROR Erreur: non intercepté (promis): Erreur: chargement du morceau

Je rencontre un problème lors de l'utilisation d'angular 6 et d'IE 11, l'application fonctionne correctement dans Chrome et un autre navigateur mais dans Internet Explorer, je reçois ce

ERREUR Erreur: non intercepté (promis): Erreur: chargement du bloc par défaut ~ app-xxxxx ~ eb5ba6d4 échoué. (manquant: http: // localhost: 4200 / default ~ app-xxxx.js ) Erreur: Le chargement du bloc par défaut ~ app-xxxx ~ eb5ba6d4 a échoué. (disparu: http: // localhost: 4200 / default ~ app-xxxx ~ eb5ba6d4.js a >)

Détails du projet

CLI angulaire: 6.2.3 Nœud: 8.12.0 Système d'exploitation: win32 x64 Angulaire: ...

Version du package

@ angular-devkit / architect 0.8.3 @ angular-devkit / core 0.8.3 @ angular-devkit / schematics 0.8.3 @ schémas / angulaire 0.8.3 @ schematics / mise à jour 0.8.3 rxjs 6.2.2 typecript 2.9.2

Le routage de mon application est

const routes: Routes = [
    {
        path: '',
        loadChildren:  'app/content/pages/pages.module#PagesModule'

    },
    {
        path: 'layout',
        loadChildren: 'app/content/layout/layout.module#LayoutModule',      
    },
    {
        path: '**',
        redirectTo: ''
    }
];


4 commentaires

voyez-vous quelque chose (comme un 404) dans l'onglet réseau de la console de développement?


@Arikael non rien à voir comme 404


quel est le statut http du fichier? Ou ne voyez-vous rien du tout? Nous avons eu une fois le problème que certains AdBlocker interféraient


Essayez de mettre à jour les packages associés, pouvez-vous publier le code Assez pour reproduire le problème comme dans l ' exemple minimal, complet et vérifiable .


6 Réponses :


1
votes

Je pense que vous devez ajouter des polyfills. Si vous ouvrez le fichier src / polyfills.ts , vous devez décommenter ces importations:

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
// import 'core-js/es6/symbol';
// import 'core-js/es6/object';
// import 'core-js/es6/function';
// import 'core-js/es6/parse-int';
// import 'core-js/es6/parse-float';
// import 'core-js/es6/number';
// import 'core-js/es6/math';
// import 'core-js/es6/string';
// import 'core-js/es6/date';
// import 'core-js/es6/array';
// import 'core-js/es6/regexp';
// import 'core-js/es6/map';
// import 'core-js/es6/weak-map';
// import 'core-js/es6/set';

EDIT:

Il peut y avoir plus de polyfils listés sous cette liste, comme mentionné par @Arikael dans les commentaires, que vous voudrez peut-être également décommenter.


2 commentaires

sous ces lignes, il y a / ** IE10 et IE11 requiert ce qui suit pour l'API Reflect. * / import 'core-js / es6 / reflect'; Avez-vous également décommenté cela?


@Arikael oui "core-js / es6 / reflètent" déjà non commenté mais toujours le même problème



0
votes

Vous devez ajouter une balise Meta.

<meta http-equiv="X-UA-Compatible" content="IE=edge" >


0 commentaires


2
votes

Après avoir investi quelques heures, j'ai enfin trouvé mes solutions Problème concernant la promesse ((t, n) =>,

  1. Tout d'abord, ouvrez le fichier src / polyfills.ts et supprimez le commentaire
module.exports = function (event) {
  return new Promise(function(resolve, reject)  {
    let reader = new FileReader();
    let files = event.target.files;
    let len = files.length;
    if (len > 1) {
      reject(new DOMException("Only one file can be uploaded at a time"));
    } else {
      reader.onerror = function() {
        reader.abort();
        reject(new DOMException("Problem parsing input file."));
      };
      let file = files[0]
      reader.onload = function(evt){
        const uint = new Uint8Array(evt.target.result);
        let bytes = [];
        uint.map(function(byte) {
          bytes.push(byte.toString(16));
        });
        const hex = bytes.join('').toUpperCase();
        let base64 = reader.result.split(',')[1];
        file.base64 = base64;
        file.binaryFileType = getMimetype(hex);
        resolve(file);
      };
      reader.readAsDataURL(file);
    }
  });
}

=> l'expression lambda n'est pas prise en charge dans IE, nous pouvons donc la remplacer par code function () au lieu de cette expression.

  1. Installez quelques packages

    npm install --save web-animations-js

    npm install --save classlist.js

Ensuite, on m'a trouvé un problème de promesse dans l'un des packages npm (fuctbase64 / index.js)

module.exports = function (event) {
  return new Promise((resolve, reject) => {
    let reader = new FileReader();
    let files = event.target.files;
    let len = files.length;
    if (len > 1) {
      reject(new DOMException("Only one file can be uploaded at a time"));
    } else {
      reader.onerror = () => {
        reader.abort();
        reject(new DOMException("Problem parsing input file."));
      };
      let file = files[0]
      reader.onload = (evt) => {
        const uint = new Uint8Array(evt.target.result);
        let bytes = [];
        uint.map(byte => {
          bytes.push(byte.toString(16));
        });
        const hex = bytes.join('').toUpperCase();
        let base64 = reader.result.split(',')[1];
        file.base64 = base64;
        file.binaryFileType = getMimetype(hex);
        resolve(file);
      };
      reader.readAsDataURL(file);
    }
  });
}

Remplacez le code par

/** IE9, IE10 and IE11 requires all of the following polyfills. **/
// import 'core-js/es6/symbol';
// import 'core-js/es6/object';
// import 'core-js/es6/function';
// import 'core-js/es6/parse-int';
// import 'core-js/es6/parse-float';
// import 'core-js/es6/number';
// import 'core-js/es6/math';
// import 'core-js/es6/string';
// import 'core-js/es6/date';
// import 'core-js/es6/array';
// import 'core-js/es6/regexp';
// import 'core-js/es6/map';
// import 'core-js/es6/weak-map';
// import 'core-js/es6/set';


1 commentaires

> l'expression lambda ne prend pas en charge dans IE, peut-être que vous pouvez modifier les paramètres som dans votre fichier tsconfig.json à la place pour résoudre ce problème: "module": "es2015" et "target": "es5"



0
votes

Je suis nouveau chez angular. J'ai rencontré une erreur concernant «l'échec du chargement du module xyz du bloc» dans Internet Explorer. J'avais essayé beaucoup de choses mais aucune solution. Enfin, j'ai changé l'ordre d'ajout du tableau "déclarations" et du tableau "importations" dans la définition de NgModule. Je veux dire que la définition de "déclarations" avant "importations" dans NgModule () a résolu mon problème.

@NgModule({
  declarations: [SomeComponent],
  imports: [
    FormsModule,
    ReactiveFormsModule,
    CommonModule,
    MaterialModule,
    TranslateModule.forChild({
      loader: {
        provide: TranslateLoader,
        useFactory: translateHttpLoaderFactory,
        deps: [HttpClient]
      }
    })
  ]
})


0 commentaires