Мы пытаемся обновить наше 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 и попытаться применить эти изменения к существующему приложению, но любая помощь будет принята с благодарностью.
polyfills.ts
. В моемpolyfills.ts
есть только эта строкаimport 'zone.js/dist/zone';
без комментариев. Насколько мне известно, Angular 8+ не требует раскомментированияpolyfills.ts
, чтобы сделать его совместимым с IE. Вы можете попытаться восстановитьpolyfills.ts
в исходное состояние, чтобы посмотреть, что произойдет. - person Yu Zhou   schedule 27.04.2021webpack
для создания приложения? - person Zsolt Balogh   schedule 27.04.2021webpack
. В вашей ситуации я думаю, что проблему сложно определить, так как журналов ошибок нет. Вы можете перенести исходный код в новое приложение Angular 11 в качестве временного решения. - person Yu Zhou   schedule 28.04.2021