Angular 13升级至15后ng generate component重复生成组件问题
Angular 13升级至15后组件生成异常排查方案
问题现象
- 执行
ng g c SomeComponent命令时,组件文件会100%重复生成 - 生成的组件未自动包含
ngOnInit()方法,暂未明确该现象与重复生成是否关联
解决步骤
1. 对齐Angular CLI版本
确保全局与项目本地的Angular CLI均为15.x稳定版,版本不一致易导致生成逻辑冲突:
# 查看全局CLI版本 ng version # 查看项目本地CLI版本 npm list @angular/cli
若版本不匹配,执行统一升级:
npm install -g @angular/cli@15 npm install @angular/cli@15 --save-dev
2. 清理CLI缓存
缓存损坏可能引发生成异常,执行缓存清理:
ng cache clean --all
3. 检查angular.json配置
确认项目的schematics节点中,@schematics/angular:component配置无重复触发逻辑,示例正常配置:
"schematics": { "@schematics/angular:component": { "style": "css", "skipTests": false, "standalone": false } }
4. 重置Schematics默认配置
若配置存在异常,可重置为Angular 15的默认组件生成规则:
ng config schematics.@schematics/angular:component --reset
关于ngOnInit()不自动生成的说明
Angular 14及以上版本中,CLI生成组件时默认不再自动添加ngOnInit(),这是官方默认行为变更,与重复生成问题无关。若需要自动生成,可通过修改schematics配置自定义模板,或手动在组件中导入并实现OnInit接口:
import { Component, OnInit } from '@angular/core'; @Component({ selector: 'app-some', templateUrl: './some.component.html', styleUrls: ['./some.component.css'] }) export class SomeComponent implements OnInit { ngOnInit(): void { // 初始化逻辑 } }
内容的提问来源于stack exchange,提问作者David J
相关产品推荐
相关产品推荐

