Angular 2+: IE 11 не удалось получить свойство "вызов" неопределенной или нулевой ссылки

у меня проблема с Internet Explorer, задыхаясь от чего-то с Webpack. Я использую Angular-CLI 1.7.4 и Angular 5.2.10, текущие версии. Я получаю эту ошибку:

SCRIPT: 5007 не удалось получить свойство "вызов" неопределенного или null ссылка. Встроенный комплект.js (55,12)

это отличается от этот вопрос, в том, что он находится на другой линии в связке. Линия выглядит как это:

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

Я попытался изменить код webpack в node_modules to console.log на moduleId, но по какой-то причине он не регистрируется.

нашел этой теме, где много людей занимаются этим вопросом. Я не вижу, что имеет отношение к моей проблеме.

у меня нет никаких круговых предупреждений о зависимостях от CLI.

Я вернул свой код к нескольким предыдущим версиям, переустановил модули узлов, и я все равно получите ту же ошибку. Это действительно странно.

UPDATE: вот поля, которые у меня есть:

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';

Я нашел этот вопрос, что показывает, что у ряда людей есть эта проблема, и предлагаемые решения не работают.

UPDATE 1: похоже, что эта проблема не возникает при каждой компиляции. Если проблема начинается, перезапустите сервер Angular-CLI или повторите сборку, пока она не будет работать.

обновление 2: я нашел причину консоли.журнал не вызывался из Webpack. Это не обязательно на Webpack. Я искал свой node_modules на modules[moduleId].call(module.exports, module, module.exports, __webpack_require__), и обнаружили, что было 87 происшествий. Я предположил, что, поскольку он сказал "webpack", что он был частью webpack, так что это было первое место, где я посмотрел, то есть место, где он тут происходят, поэтому я остановился там, думая, что нашел его.

кроме того, у меня снова возникла эта проблема, и я перезапустил Сервер Angular-CLI кучу раз, но я не могу получить компиляцию, которая работает.

это становится критическим, поэтому я собираюсь поднять награду за этот вопрос.

UPDATE: похоже, IE задыхается от вызова (Function.prototype.call) метода, который добавляет polyfills. Я захватил это из inline.пачка.js. Это одна из первых вещей, которая происходит:

function(module, exports, __webpack_require__) {

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

}

4 ответов


даже с включенными выше полями, вы все равно можете использовать функцию, которая не поддерживается в IE. Вместо этого вы можете попробовать следующее:

 import 'core-js/shim';

Это будет включать в себя все polyfills (который на самом деле не добавляет столько в ваш пакет в любом случае). По крайней мере, это поможет устранить эту полифиллы проблема.

источник для справки: https://github.com/zloirock/core-js/blob/master/shim.js

удачи!


эта ошибка возникает только при запуске ng serve, и не будет происходить в производственной сборке, поэтому проблема не критична и имеет обходной путь, следующим образом:

обходной путь: когда это произойдет, закройте браузер, перезапустите сервер Angular-CLI dev и снова откройте браузер для своего приложения. (вам не нужно очищать кэш или что-либо еще.)

это может иметь больше общего с моей тестовой среде, чем все остальное. Мы использовали SauceLabs для тестирование, т. е.. Недавно мы начали использовать VirtualBox. обновление: это иногда происходит и в VirtualBox, но странно, что в одной сборке это иногда происходит в одной среде тестирования, а не в другой.

Per этой теме, github.com/jakehockey10 говорит:

У меня эта проблема только после того, как происходит перезагрузка с Инструменты разработчика открыты. Нет проблем с Chrome и Firefox, но если у меня есть инструменты разработчика открываются в IE11 и сохраняют изменения в моем typescript, почти в 100% случаев я получаю эти ошибки при перезагрузке.

кроме того, Angular 6 теперь полностью выпущен и использует новую основную версию Webpack. Я еще не пробовал, но было бы хорошо знать, если кто-то попытался решить проблему путем обновления.


Если этот код работает в других браузерах, возможно, вы столкнулись с проблемой реализации JS для IE. В вашем проекте откройте файл src / polyfills.ts. Он начинается с кучки прокомментированных строк с IE polyfills. Раскомментируйте все из них и перестроить приложение. Если это поможет, попробуйте выяснить, какой конкретный polyfill решил вашу проблему и прокомментировать остальное.


обходной путь: поскольку проблема связана только с сервером webpack dev, мы решили просто написать файлы с ng build --watch и служить им с lite-server для тестирования IE