执行ng serve命令报错:@angular/core未找到'ɵɵdefineInjectable'导出项
报错原因
- 核心为
ng2-charts版本与当前项目的Angular版本不兼容。ɵɵdefineInjectable是Angular 6及以上版本才提供的内部注入API,若你使用的Angular版本低于要求,或是安装的ng2-charts版本高于当前Angular可支持的范围,就会触发该导出缺失的报错。 - 不同版本
ng2-charts对Angular的版本要求有明确限制:ng2-charts v3+要求Angular版本≥13,ng2-charts v2要求Angular版本≥9,只有ng2-charts v1支持Angular 6~8版本,版本匹配错误就会出现该警告。
解决方案
- 先确认当前项目的Angular版本,在项目根目录执行以下命令:
ng version
找到输出中@angular/core对应的版本号即可。 - 卸载当前已安装的不兼容版本依赖:
npm uninstall ng2-charts chart.js - 根据你的Angular版本安装匹配的依赖包,对应匹配规则如下:
- Angular 14及以上:安装
ng2-charts@4++chart.js@4 - Angular 13:安装
ng2-charts@3.x+chart.js@3 - Angular 9~12:安装
ng2-charts@2.x+chart.js@2.9 - Angular 6~8:安装
ng2-charts@1.x+chart.js@2.9
比如你的项目为Angular 8版本,执行安装命令如下:npm install ng2-charts@1.6.0 chart.js@2.9.4
- 依赖安装完成后重新执行
ng serve启动项目,报错即可消失。
内容的提问来源于stack exchange,提问作者Kundan Singh
相关产品推荐
相关产品推荐

