Angular 5+项目执行ng g c命令报错:Could not find (undefined)
解决Angular CLI生成组件时报错“Error: Could not find (undefined)”
我之前也碰到过类似的诡异问题,结合你的操作场景,大概率是CLI无法正确识别项目配置、版本不兼容或者依赖缓存异常导致的,给你几个针对性的排查和解决方向:
确保CLI能读取到项目配置文件
你是在项目的pages子文件夹执行命令,但Angular的核心配置文件(Angular5用.angular-cli.json,Angular6+用angular.json)是放在项目根目录的。CLI执行生成命令时必须读取这个配置文件,子目录下执行很可能因为找不到配置文件抛出这种模糊错误。建议先回到项目根目录再执行命令,或者直接在根目录指定组件的生成路径:ng g c pages/my-new-component检查全局与本地CLI版本是否匹配
重装CLI后很容易出现全局版本和项目本地版本不一致的情况,这会触发各种兼容性问题。先在项目根目录执行命令查看版本信息:ng --version对比输出里
@angular/cli的全局版本和本地版本,如果不一致,安装和项目Angular版本匹配的CLI:- Angular 5 对应 CLI 1.x 版本,执行:
npm install @angular/cli@1.7.4 --save-dev - 同时把全局CLI也切换到对应版本:
npm install -g @angular/cli@1.7.4
- Angular 5 对应 CLI 1.x 版本,执行:
检查项目配置文件是否损坏或缺失关键字段
打开项目根目录的配置文件(.angular-cli.json或angular.json),核对核心配置是否完整:- 对于Angular5的
.angular-cli.json,确认apps数组里的每个条目都包含root、sourceRoot、name这些必填字段,没有拼写错误或缺失。 - 对于Angular6+的
angular.json,确认projects下你的项目配置里,sourceRoot指向正确的src目录,没有被误修改。
- 对于Angular5的
清理依赖缓存并重新安装依赖
有时候损坏的node_modules或依赖锁文件也会引发奇怪的错误,执行以下步骤重置依赖环境:# 删除node_modules和锁文件 rm -rf node_modules package-lock.json # 重新安装所有依赖 npm install # 再次尝试生成组件 ng g c my-new-component
如果以上方法都无效,可以尝试在项目根目录执行ng update(注意Angular5需要先把CLI升级到对应兼容版本再执行),或者备份项目后重新初始化CLI配置:ng init(这个操作会覆盖配置文件,一定要先备份)。
内容的提问来源于stack exchange,提问作者Joseph Fang
相关产品推荐
相关产品推荐

