Angular创建组件遇skipSelector未定义错误及版本不匹配警告求助
解决Angular创建组件时的版本警告与
skipSelector is not defined错误 我来帮你搞定这两个问题,咱们一步步来:
一、处理Angular CLI版本不匹配警告
首先说这个版本警告——全局CLI(8.1.1)比项目本地的(7.1.4)高,Angular为了保证项目稳定性,会默认使用本地版本执行命令,这个提示本身不影响功能,但看着闹心的话有两种处理方式:
- 直接禁用警告:执行你提到的命令就行,在终端输入:
执行后这个警告就不会再弹出来了。ng config -g cli.warnings.versionMismatch false - 统一CLI版本(更推荐):长期来看,版本不一致容易引发各种奇怪问题,你可以选择把本地CLI升级到和全局一致,或者把全局版本降级到本地的7.1.4:
- 升级本地CLI到8.1.1:
npm install @angular/cli@8.1.1 --save-dev - 降级全局CLI到7.1.4:
npm uninstall -g @angular/cli && npm install -g @angular/cli@7.1.4
- 升级本地CLI到8.1.1:
二、解决skipSelector is not defined报错
这个错误在Angular 7的CLI版本里偶尔会出现,大概率是配置或依赖的问题,试试下面几个方案:
方案1:清理依赖缓存后重新安装
很多时候依赖缓存或损坏会导致这类奇怪报错,步骤如下:
- 删除项目里的
node_modules文件夹:- macOS/Linux:
rm -rf node_modules - Windows:
rmdir /s /q node_modules
- macOS/Linux:
- 删除
package-lock.json文件(如果用yarn的话删yarn.lock) - 重新安装依赖:
npm install - 再次尝试创建组件:
ng g c contact-us
方案2:手动指定skipSelector参数执行命令
Angular 7的CLI可能在某些场景下没有给skipSelector参数设置默认值,导致报错,你可以在创建组件时显式指定这个参数:
ng g c contact-us --skipSelector=false
(false表示生成组件选择器,如果你不需要选择器就改成true)
方案3:检查并修改angular.json配置
打开项目根目录的angular.json文件,找到schematics节点,看看有没有配置@schematics/angular:component的默认参数,如果没有的话,添加skipSelector的默认值:
"schematics": { "@schematics/angular:component": { "skipSelector": false, // 其他你需要的默认配置,比如styleext之类的 } }
保存后再尝试创建组件。
方案4:升级本地CLI到7.x最新版本
Angular 7.1.4确实存在一些小bug,你可以升级到7.x系列的最新稳定版(比如7.3.9),这个版本修复了不少旧问题:
npm install @angular/cli@7.3.9 --save-dev
安装完成后再执行组件创建命令试试。
内容的提问来源于stack exchange,提问作者newAngs
相关产品推荐
相关产品推荐

