Обновление Angular9 до Angular11 IE11

Мы пытаемся обновить наше angular 9.0.4 приложение до angular 11.2.7. В предыдущей версии приложение работало нормально в IE11, но после обновления оно больше не работает (ничего не показывалось, ничего не регистрировалось).

Любая помощь или подсказка будут оценены ...

Я нашел много инструкций, чтобы заставить его работать в случае новых приложений, например: https://dev.to/coly010/angular-how-to-support-ie11-4924 или версия angular CLI 11 не работает в Internet Explorer 11, но ни одна из них пока не работала для обновления

Я дважды проверил наш polyfills.ts, и все в порядке. Единственное, чего я не нашел, так это файла .browserlist. На основе этого сообщения: https://github.com/angular/angular-cli/issues/18032 кажется, что поддержка IE11 стала дополнительной функцией, поэтому я создал файл с именем .browserlist (и попробовал с именем файла .browserlistrc) содержимое:

last 1 Chrome version
last 1 Firefox version
last 2 Edge major versions
last 2 Safari major version
last 2 iOS major versions
Firefox ESR
not IE 9-10
IE 11

По-прежнему не работает ... Если я запустил команду: npx browserslist, я верну список поддерживаемых, включая IE

chrome 90
edge 90
edge 89
firefox 87
firefox 78
ie 11
ios_saf 14.0-14.5
ios_saf 13.4-13.7
ios_saf 13.3
ios_saf 13.2
ios_saf 13.0-13.1
safari 14
safari 13.1

Вот некоторые настройки на случай, если вы заметите то, что я пропустил:

В нашем tsconfig.json файле для цели сборки установлено значение es5.

{
  "compilerOptions": {
    "importHelpers": true,
    "target": "es5",
    "module": "commonjs",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "removeComments": false,
    "noImplicitAny": false,
    "suppressImplicitAnyIndexErrors": true,
    "outDir": "build/www/app",
    "lib": [
      "es6",
      "dom"
    ],
    "typeRoots": [
      "node_modules/@types"
    ],
    "baseUrl": "./"
  },
  "include": [
    "src/main/webapp/app",
    "src/test/javascript/"
  ],
  "exclude": [
  ]
}

Вот содержание нашего polyfills.ts:

import 'core-js/es/symbol';
import 'core-js/es/object';
import 'core-js/es/function';
import 'core-js/es/parse-int';
import 'core-js/es/parse-float';
import 'core-js/es/number';
import 'core-js/es/math';
import 'core-js/es/string';
import 'core-js/es/date';
import 'core-js/es/array';
import 'core-js/es/array';
import 'core-js/es/object';
import 'core-js/es/regexp';
import 'core-js/es/map';
import 'core-js/es/weak-map';
import 'core-js/es/set';
import 'core-js/es/promise';

import 'eligrey-classlist-js-polyfill';  // Run `npm install --save eligrey-classlist-js-polyfill`.

import 'core-js/es/reflect';
import 'reflect-metadata';

import 'web-animations-js';  // Run `npm install --save web-animations-js`.

import 'zone.js/dist/zone'; // Included with Angular CLI.

// IE 11 does not support matches only webkitMatchesSelector
if (!Element.prototype.matches) {
    Element.prototype.matches = (<any>Element.prototype).msMatchesSelector ||
        Element.prototype.webkitMatchesSelector;
}

require('../manifest.webapp');

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


person Zsolt Balogh    schedule 26.04.2021    source источник
comment
В моем новом приложении Angular 11 я не раскомментировал полифилы в polyfills.ts. В моем polyfills.ts есть только эта строка import 'zone.js/dist/zone'; без комментариев. Насколько мне известно, Angular 8+ не требует раскомментирования polyfills.ts, чтобы сделать его совместимым с IE. Вы можете попытаться восстановить polyfills.ts в исходное состояние, чтобы посмотреть, что произойдет.   -  person Yu Zhou    schedule 27.04.2021
comment
Я попробовал, и это действительно сработало для нового приложения, которое я сделал, но не сработало для приложения, которое мне нужно обновить ... Вы используете webpack для создания приложения?   -  person Zsolt Balogh    schedule 27.04.2021
comment
Нет, я не использовал webpack. В вашей ситуации я думаю, что проблему сложно определить, так как журналов ошибок нет. Вы можете перенести исходный код в новое приложение Angular 11 в качестве временного решения.   -  person Yu Zhou    schedule 28.04.2021
comment
Спасибо! Миграция - это не вариант, поскольку мы не хотим потерять всю историю. Мы сгенерировали скелет проекта 2017 с angular 4 ... Кажется, что с тех пор процесс сборки изменил добычу, и пока мы обновляли зависимости, мы не затрагивали саму сборку. Сейчас мы ждем и посмотрим, разрешит ли руководство отказаться от поддержки IE11. Если они скажут «нет», мы попытаемся адаптировать процесс сборки и опубликовать решение, если оно будет выполнено.   -  person Zsolt Balogh    schedule 28.04.2021
comment
Это звучит неплохо. Вы можете вернуться, если у вас будут какие-либо успехи или возникнут дополнительные проблемы.   -  person Yu Zhou    schedule 29.04.2021