在 Angular 6.x 中,Map 和 Iterable 是 ECMAScript 2015 (ES6) 中的新特性,需要引入相应的 polyfill 才能在老版本的浏览器上正常运行。
要解决这个问题,可以按照以下步骤进行操作:
core-js 和 rxjs-compat 包:npm install --save core-js rxjs-compat
polyfills.ts 文件中引入 core-js 的 polyfill。打开 src/polyfills.ts 文件,并添加以下代码:import 'core-js/es6/map';
import 'core-js/es6/set';
import 'core-js/es6/array';
import 'core-js/es7/reflect';
import 'core-js/es6/reflect';
tsconfig.app.json 文件中,将 target 设置为 es2015。打开 src/tsconfig.app.json 文件,并确保以下配置:{
"extends": "../tsconfig.json",
"compilerOptions": {
"target": "es2015"
},
"files": [
"main.ts",
"polyfills.ts"
],
"exclude": [
"test.ts",
"**/*.spec.ts"
]
}
tsconfig.json 文件中,将 target 设置为 es2015。打开 tsconfig.json 文件,并确保以下配置:{
"compileOnSave": false,
"compilerOptions": {
"baseUrl": "./",
"outDir": "./dist/out-tsc",
"sourceMap": true,
"declaration": false,
"moduleResolution": "node",
"emitDecoratorMetadata": true,
"experimentalDecorators": true,
"target": "es2015",
"typeRoots": [
"node_modules/@types"
],
"lib": [
"es2017",
"dom"
]
}
}
这些步骤将确保你的应用程序可以在老版本的浏览器上正常运行,并且不会再出现 "找不到名称 'Map' 或 'Iterable'" 的错误。