我使用ng update
升级到了Angular 8。它运行自己的迁移脚本,这些脚本(其中包括)删除了polyfills.ts
中的es6/es7导入。据我所知,Angular将为较旧的浏览器(包括IE11)创建一个特殊的构建,我再也不用担心polyfills了?我将browserlist
更新为not IE 9-10
,而不是not IE 9-11
,以(我假设)提示它应该构建适当的polyfills。
不幸的是,在运行ng build
之后,我得到了一些与polyfill相关的错误,例如。Reflect.getMetadata is not a function
和Object doesn't support property or method 'includes'
。我尝试将reflect
和array
导入放回polyfills中,并跳过这些错误,但我遇到了其他错误。怎么回事?我是否应该包括多边形填充?
如何让Angular 8与IE11协同工作?
发布于 2019-06-20 22:45:32
让IE 11与Angular 8一起工作的一种方法是禁用differential work 。
执行以下操作:
使用带有import 'core-js'; // core-js@^3.1.4
的"target": "es5"
tsconfig.json
polyfills.ts
发布于 2019-06-25 23:55:07
如果你想在IE11等ES5浏览器以及Chrome和火狐等现代ES2015+浏览器上运行你的应用程序,可以在你的angular.json中添加额外的构建配置来支持你的应用程序的ES5捆绑包。
architect
部分:{
"projects": {
"my-app": {
"architect": {
"build": {
"configurations": {
"es5" : {
"tsConfig": "tsconfig.app.es5.json"
}
}
},
"serve": {
"configurations": {
"es5": {
"browserTarget": "my-app:build:es5"
}}}}}}}
与angular.json
一起创建
tsconfig.app.es5.json
{
"extends": "./tsconfig.app.json",
"compilerOptions": {
"target": "es5"
}
}
browserslist
以启用IE 11支持。确保browserslist位于应用程序的根目录中,与angular.json
文件并列。例如:not IE 9-10 # For IE 9-11 support, remove 'not'.
IE 11
package.json
,以使用您在步骤1:中创建的ES5配置
"scripts": {
"build": "ng build",
"buildES5": "ng build --configuration=es5",
"start": "ng serve",
"startES5": "ng serve --configuration=es5",
}
现在,您可以为仅支持ES5的传统浏览器或支持ES2015+的现代浏览器构建和提供应用程序:
npm run build
针对现代browsersnpm run buildES5
构建您的应用程序,针对传统browsersnpm run start
构建您的应用程序,并针对现代browsersnpm run startES5
构建您的应用程序,为您的应用程序提供针对传统浏览器的发布于 2019-06-17 22:05:02
我已经通过执行以下操作解决了IE 11
的polyfill.ts
问题:
从npm install --save web-animations-js
tsconfig.json
运行npm install --save web-animations-js
import 'web-animations-js'
inside tsconfig.json
的值。IE 11
需要'es5‘。
https://stackoverflow.com/questions/56563742
复制相似问题