执行ng serve命令时出现Cannot read property 'config' of null错误求助
这个错误我帮不少开发者排查过,本质就是Angular CLI在启动时没法正确加载到项目的配置对象,导致代码尝试读取一个null值的config属性而抛出异常。具体常见原因有这几个:
项目核心配置文件缺失/损坏
Angular CLI(6及以上版本)依赖根目录下的angular.json文件(旧版本是.angular-cli.json)来获取项目的构建、服务等配置。如果这个文件被误删、内容被篡改(比如JSON语法错误),或者路径不对,CLI就无法读取到有效配置对象,直接返回null,进而触发这个错误。node_modules依赖损坏或版本不兼容
如果你的node_modules文件夹里的@angular/cli相关包损坏,或者CLI版本和项目的Angular核心版本不匹配(比如用Angular 16的CLI去运行Angular 12的项目),会导致CLI初始化配置的逻辑出错,最终返回null配置对象。工作目录不正确
执行ng serve时如果没进入项目的根目录(也就是包含angular.json的文件夹),CLI找不到配置文件,同样会出现这个错误。
针对上面的原因,你可以按顺序尝试这些解决方法:
确认当前工作目录
先运行cd(Windows)或pwd(Mac/Linux)查看当前路径,确保你在项目的根目录下——也就是能看到angular.json、package.json这些文件的文件夹。检查并修复配置文件
- 查看根目录是否存在
angular.json(旧项目找.angular-cli.json),如果缺失,要么是项目未初始化(那你得先运行ng new创建项目),要么是误删了,可从备份恢复。 - 如果文件存在,打开它检查JSON语法是否正确(比如有没有遗漏逗号、括号不匹配),可以用在线JSON校验工具快速排查。
- 查看根目录是否存在
重新安装依赖
- 删除项目根目录下的
node_modules文件夹和package-lock.json(或yarn.lock)文件。 - 运行
npm install(或yarn install)重新安装所有依赖,这能解决大部分依赖损坏的问题。
- 删除项目根目录下的
匹配CLI与Angular版本
运行ng version查看本地CLI版本和项目@angular/core版本是否一致。如果版本差距过大,建议安装匹配版本的CLI:# 比如项目用Angular 14,就安装14.x版本的CLI npm install @angular/cli@14.x --save-dev
内容的提问来源于stack exchange,提问作者helen

