You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular 6项目报错:找不到Map/Set等类型及相关技术问题咨询

搞定Angular 6项目里的警告和报错!

我来帮你逐个解决这些问题,都是Angular 6升级或配置时常见的坑:

一、先处理System.import()的弃用警告

这个警告是因为Webpack 4+已经把System.import()给弃用了,现在要用标准的动态import()语法。看报错路径是来自@angular/core的源码,但大概率是你的项目里src/vendors.ts文件里的引用方式有问题:

  • 打开vendors.ts检查,如果里面有用System.import引入Angular相关模块的地方,直接换成静态import声明,或者改成import()动态导入的格式。
  • 如果是升级过来的项目,建议清理依赖后重装,避免旧缓存搞事情:
    rm -rf node_modules package-lock.json
    npm install
    

另外要确保你的Angular CLI版本是6.x的,和Angular 6.0.3匹配,版本不兼容也可能出这种奇怪的警告。

二、解决一堆找不到Map/Set/Promise的错误

这些报错本质是TypeScript编译器没加载ES6的内置类型定义,改下tsconfig.json就行:

  1. 打开项目根目录的tsconfig.json
  2. 在compilerOptions里找到lib数组(没有就新增),把es2015和dom加进去:
    "compilerOptions": {
      // 其他配置...
      "lib": [
        "es2015",
        "dom"
      ]
    }
    

es2015包含了Map、Set、Promise这些ES6自带的类型,dom则提供浏览器环境的类型定义,加完就不会报找不到这些名称的错了。

三、消除装饰器的实验性支持警告

Angular全靠装饰器(比如@Component、@NgModule)干活,TypeScript默认没开这个功能,得手动在tsconfig.json里开启:
在compilerOptions里加上这两行:

"compilerOptions": {
  // 其他配置...
  "experimentalDecorators": true,
  "emitDecoratorMetadata": true
}

加完就不会再弹这个警告了。

四、最后补几个检查项

  • TypeScript版本要匹配:Angular 6.x要求TypeScript在2.7.x到2.9.x之间,你写的2.x范围太宽,建议在package.json里锁死版本,比如"typescript": "~2.7.2",然后重装依赖。
  • @types/core-js别用太高版本:Angular 6还适配的是core-js 2.x,如果你装了@types/core-js@3.x可能会冲突,建议降级到2.x版本,比如@types/core-js@2.5.11。

做完这些改动,重启ng serve,所有报错和警告应该就都消失啦!

内容的提问来源于stack exchange,提问作者C0ZEN

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.29 07:08:17