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