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

Angular项目升级CLI后执行ng命令报错:指定schema已存在

解决Angular项目中ng命令报错"schema with key or id 'http://json-schema.org/draft-06/schema' already exists"的问题

你在升级Angular版本并安装Material库的过程中遇到了CLI冲突问题,咱们一步步来修复:

问题根源分析

你从Angular 5升级到6后,全局更新了@angular/cli到最新版本,但项目本地的依赖缓存、配置文件可能和全局CLI产生了冲突,导致schema重复引用的错误。

具体修复步骤

1. 清理本地依赖与缓存

首先彻底清理项目里的旧依赖和缓存文件:

  • 删除项目根目录下的node_modules文件夹
  • 删除package-lock.json文件(如果用Yarn则删除yarn.lock)
  • 清理npm全局缓存:
    npm cache clean --force
    

2. 确保本地CLI与项目依赖版本匹配

虽然你全局CLI已经更新,但项目本地的@angular/cli版本需要和全局版本保持一致(或者至少和Angular核心版本匹配)。执行以下命令安装项目本地的CLI:

npm install @angular/cli@6.0.1 --save-dev

注:你的项目已经升级到Angular 6.0.1,所以安装对应版本的CLI即可,避免版本不兼容。

3. 检查并修复Angular配置文件

Angular 6使用angular.json替代了旧版本的.angular-cli.json,请检查该文件中的$schema字段:
确保它指向本地CLI的schema文件,而不是外部的draft-06 schema:

"$schema": "./node_modules/@angular/cli/lib/config/schema.json"

如果发现有重复的schema引用,删除多余的条目即可。

4. 重新安装所有依赖

完成以上步骤后,重新安装项目依赖:

npm install

5. 额外排查(如果以上步骤无效)

  • 删除项目根目录下的.angular缓存文件夹(如果存在)
  • 重启你的终端窗口,确保环境变量和CLI路径生效
  • 尝试用npx ng代替直接ng命令,强制使用项目本地的CLI版本

关于最初的ElementRef非泛型错误

这个错误是因为Angular 5到6的版本变化:Angular 6中ElementRef变成了泛型类型,而你最初安装的Material库版本可能和Angular 5不兼容。你已经升级到Angular 6并安装了对应版本的@angular/material和@angular/cdk(6.0.1),这个问题应该已经解决了。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 07:35:18