Angular项目Material控件版本不兼容引发构建报错问题求助
问题根因
你遇到的报错核心由2类版本不匹配导致:
- @angular/material、@angular/cdk的主版本与@angular/core、@angular/cli主版本不一致
- TypeScript版本高于当前Angular版本支持的范围,出现类型校验兼容问题
- 找不到NodeJS命名空间是缺少Node类型定义包或tsconfig未配置Node类型引入
修复步骤
- 首先执行
ng version查看当前@angular/core的主版本号,后续所有@angular家族包版本都要和该主版本保持完全一致,例如核心版本为14,则所有包都使用14.x.x版本 - 卸载当前不匹配的Material相关包:
npm uninstall @angular/material @angular/cdk - 安装对应版本的Material、CDK包,将下方命令中的版本号替换为你自己的Angular核心主版本:
npm install @angular/material@你的核心主版本号 @angular/cdk@你的核心主版本号 - 降级TypeScript到对应兼容版本:不同Angular版本对应支持的TS版本有明确范围,例如Angular14对应TS 4.64.8,Angular15对应TS4.84.9,执行如下命令安装对应版本:
npm install typescript@对应版本号 --save-dev - 修复找不到NodeJS命名空间问题:
- 执行命令安装Node类型定义包:
npm install @types/node --save-dev - 打开项目根目录下的tsconfig.app.json文件,在compilerOptions的types配置项中加入node,示例配置如下:
- 执行命令安装Node类型定义包:
{ "compilerOptions": { // 其余原有配置保持不变 "types": ["node"] } }
- 最后删除项目根目录下的node_modules文件夹和package-lock.json文件,重新执行
npm install安装所有依赖,之后执行ng build即可正常构建
可选快速绕过方案
如果暂时不需要调整版本,想要临时跳过第三方包类型校验完成构建,可以在项目根目录的tsconfig.json的compilerOptions中添加如下配置:
"skipLibCheck": true
该方案仅作临时处理,长期使用建议还是完成版本对齐避免后续出现其他兼容问题。
内容的提问来源于stack exchange,提问作者Jason Livengood
相关产品推荐
相关产品推荐

