Angular 2+: IE 11 impossible D'obtenir la propriété 'call' de référence non définie ou nulle

J'ai un problème avec Internet Explorer qui s'étouffe avec Webpack. J'utilise Angular-CLI 1.7.4, et Angular 5.2.10, les versions actuelles. Je reçois cette erreur:

SCRIPT: 5007 impossible d'obtenir la propriété 'call' de indefined ou null référence. Inline bundle.js (55,12)

c'est différent de ce problème, en ce qu'elle est sur une ligne différente dans le bundle. La ligne ressemble ceci:

/******/        modules[moduleId].call(module.exports, module, module.exports, __webpack_require__);

j'ai essayé de modder le code webpack dans le node_modulesconsole.logmoduleId, mais il ne se connecte pas pour une raison quelconque.

j'ai trouvé ce fil, où beaucoup de gens sont à régler cette question. Je ne vois pas ce qui est pertinent à mon problème.

Je n'ai pas d'avertissements de dépendances circulaires du CLI.

j'ai retourné mon code à plusieurs versions précédentes, réinstallé les modules de noeud, et je obtiens toujours la même erreur. C'est vraiment étrange.

mise à JOUR: Voici les polyfills j'ai:

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/set';
import 'core-js/es6/reflect';
import 'core-js/es7/reflect';

j'ai aussi trouvé ce problème, qui montre qu'un certain nombre de gens ont ce problème, et les solutions proposées ne fonctionnent pas.

mise à jour 1: Il semble que ce problème ne se pose pas sur toutes les compilations. Si le problème commence, redémarrez le serveur Angular-CLI, ou re-construisez jusqu'à ce qu'il fonctionne.

mise à jour 2: j'ai trouvé la raison pour laquelle la console.log n'a pas été appelé de Webpack. C'est que ce n'est pas forcément Webpack. J'ai cherché ma node_modulesmodules[moduleId].call(module.exports, module, module.exports, __webpack_require__), et a constaté qu'il y avait 87 événements. J'ai supposé que parce qu'il disait "webpack" qu'il faisait partie de webpack, donc c'était le premier endroit où j'ai regardé, qui est un endroit où il se produisent, alors je me suis arrêté là en pensant que je l'avais trouvé.

de plus, j'ai encore ce problème, et j'ai redémarré mon Plusieurs fois, mais je ne suis pas capable d'obtenir une compilation qui fonctionne.

cela devient critique, donc je vais soulever une prime sur cette question.

mise à JOUR: Il semble que IE est d'étouffement sur l'invocation (Function.prototype.call) de la méthode qui ajoute les polyfills. J'ai capturé cette de ligne.bundle.js. C'est une des premières choses qui arrive:

function(module, exports, __webpack_require__) {

    module.exports = __webpack_require__("./src/polyfills.ts");

}
13
demandé sur BBaysinger 2018-04-19 04:44:19

4 réponses

même avec les polyfills ci-dessus inclus, vous pouvez toujours utiliser une fonctionnalité qui n'est pas prise en charge dans IE. Au lieu de cela, vous pourriez essayer ceci:

 import 'core-js/shim';

cela inclura tous les polyfills (ce qui n'ajoute pas grand chose à votre paquet de toute façon). À tout le moins, cela aidera à éliminer que les polyfills sont le problème.

La source de référence: https://github.com/zloirock/core-js/blob/master/shim.js

Bonne chance!

6
répondu Pearman 2018-04-23 18:31:36

cette erreur ne se produit que lorsque ng serve, et ne se produiront pas dans une production de construire, de sorte que le problème n'est pas critique, et a une solution de contournement, comme suit:

solution de contournement: lorsque cela se produit, fermez votre navigateur, redémarrez Angular-CLI dev server, et rouvrez le navigateur à votre application. (vous n'avez pas besoin de vider le cache, ou quoi que ce soit d'autre.)

Cela peut avoir plus à voir avec mon environnement de test qu'autre chose. On utilise des saucisses pour les tests de IE. Nous avons récemment commencé à utiliser VirtualBox.mise à Jour: cela se produit parfois aussi bien dans VirtualBox, mais il est étrange que sur une construction, cela se produise parfois dans un environnement de test, et pas l'autre.

Par ce fil, github.com/jakehockey10 dit:

j'ai ce problème uniquement après un rechargement se produit avec le Outils de développement ouverts. Pas de problème avec Chrome et Firefox, mais si j'ai les outils de développement s'ouvrent dans IE11 et sauvegardent une modification de mon script, presque 100% du temps, je reçois ces erreurs lors de la recharge.

de plus, Angular 6 est maintenant en pleine version, et utilise une nouvelle version majeure de Webpack. Je ne l'ai pas encore essayé, mais ce serait bien de savoir si quelqu'un a essayé de résoudre le problème en mettant à niveau.

5
répondu BBaysinger 2018-08-17 18:01:06

si ce code fonctionne dans d'autres navigateurs, vous avez peut-être rencontré un problème de mise en œuvre JS spécifique à IE. Dans votre projet, ouvrez le fichier src/polyfills.ts. Il commence avec un tas de lignes commentées avec IE polyfills. Décommentez-les tous et reconstruisez l'application. Si cela aide, essayez de savoir quels polyfill résolu votre problème et de commenter le reste.

0
répondu Yakov Fain 2018-04-19 02:14:03

solution de contournement: puisque le problème concerne uniquement le serveur webpack dev, nous avons simplement opté pour écrire les fichiers avec ng build --watch et servir avec lite-server pour tester IE <= 11.

0
répondu BBaysinger 2018-04-27 17:37:41