在升级Angular项目时,因依赖或API变更引发的编译报错非常普遍。本文汇总了Angular 8迁移过程中多个典型问题的报错信息及详细解决方案,帮助你快速排错,避免踩坑。
1. polyfills.ts中的reflect文件无法找到
报错信息如下
ERROR in ./src/polyfills.ts
Module not found: Error: Can't resolve 'core-js/es7/reflect' in 'E:AJupdate_to8LibraryDemoteleriksrc'
修复方法
import ‘core-js/es7/reflect';
替换为
import 'core-js/es/reflect'
2. @angular/http 不兼容
报错信息如下
npm WARN @angular/http@7.2.15 requires a peer of @angular/core@7.2.15 but none is installed. You must install peer dependencies yourself.
Angular 8版本已不再支持@angular/http模块,因此需要将其彻底移除。
执行以下命令
PM>npm uninstall @angular/http
若package.json中仍有@angular/http依赖,请手动移除该条目,然后运行以下命令
npm i
3. Kendo CSS 报错

这类错误一般源于Kendo主题包引用方式的变更。在新版本中,主题包需通过angular.json配置文件进行引入。
具体修复步骤如下
(1)将src/style.scss文件中的主题引用注释掉
// @import "~@progress/kendo-theme-default/scss/all";
(2)在angular.json中添加主题包的引用配置
"styles": [
"src/styles.scss",
"node_modules/@progress/kendo-theme-default/dist/all.css"
],
完成上述配置后,重启应用即可消除报错。
4. TypeScript 不兼容问题
报错信息如下
@angular/compiler-cli@8.0.3 requires a peer of typescript@>=3.4 <3.5 but none is installed. You must install peer dependencies yourself.
解决方法
npm i typescript@3.4.3
建议安装TypeScript 3.4.3版本,该版本与Angular 8编译器兼容性最佳。
总结
以上是Angular 8升级中较为常见的几类报错,按步骤操作通常即可解决。需要特别注意的是,版本依赖的兼容性是升级成败的关键,遇到类似错误时,应优先检查相关包的版本是否符合Angular 8的依赖要求。
