Angular 6执行ng -o命令时出现Cannot read property 'length'错误
解决Angular CLI 6.0.0执行
ng -o时的"Cannot read property 'length' of undefined"错误 问题描述
我在使用Angular CLI 6.0.0版本时遇到了一个异常情况:直接在浏览器粘贴URL访问项目完全正常,控制台也没有任何报错,但执行ng -o命令时却抛出了以下错误:
Cannot read property 'length' of undefined TypeError: Cannot read property 'length' of undefined at levenshtein (F:\Learnings\AngularHandsOn\Angular6\angular6Handson\node_modules\@angular\cli\models\command-runner.js:58:23) at listAllCommandNames.sort (F:\Learnings\AngularHandsOn\Angular6\angular6Handson\node_modules\@angular\cli\models\command-runner.js:69:43) at Array.sort (native) at Object.<anonymous> (F:\Learnings\AngularHandsOn\Angular6\angular6Handson\node_modules\@angular\cli\models\command-runner.js:67:65) at Generator.next (<anonymous>) at F:\Learnings\AngularHandsOn\Angular6\angular6Handson\node_modules\@angular\cli\models\command-runner.js:7:71 at new Promise (<anonymous>) at __awaiter (F:\Learnings\AngularHandsOn\Angular6\angular6Handson\node_modules\@angular\cli\models\command-runner.js:3:12) at Object.runCommand (F:\Learnings\AngularHandsOn\Angular6\angular6Handson\node_modules\@angular\cli\models\command-runner.js:28:12) at F:\Learnings\AngularHandsOn\Angular6\angular6Handson\node_modules\@angular\cli\lib\cli\index.js:60:58
问题原因
这是Angular CLI 6.x版本的一个已知Bug:当CLI尝试计算命令的编辑距离(用于提示相似命令)时,由于部分命令列表未正确初始化或为空,导致访问length属性时触发undefined错误。ng -o是ng open的简写,但旧版本CLI对这个简写命令的解析逻辑存在缺陷。
解决方案
这里有几个可行的解决办法,按优先级推荐:
升级Angular CLI到稳定版本
这个Bug在后续CLI版本中已被修复,你可以执行以下命令完成升级:npm uninstall -g @angular/cli npm cache clean --force npm install -g @angular/cli@latest # 同时更新项目内的CLI依赖 cd your-project-folder npm install --save-dev @angular/cli@latest使用完整命令替代简写
如果暂时不想升级,可以尝试使用完整的ng open命令代替ng -o,部分场景下完整命令能避开简写解析的Bug:ng open检查并修复命令配置
如果你自定义过CLI命令或修改过angular.json配置,检查是否存在命令定义不完整的情况,确保所有注册的CLI命令结构正确,避免空值引发的错误。
内容的提问来源于stack exchange,提问作者Vishal Gupta
相关产品推荐
相关产品推荐

