当我尝试运行此命令时:
ng generate component <component-name>
我收到了这个错误:
Error: Cannot read property 'dasherize' of undefined
Cannot read property 'dasherize' of undefined
我的角度配置:
Angular CLI: 1.7.1
Node: 7.5.0
OS: darwin x64
Angular: 5.2.6
... animations, common, compiler, compiler-cli, core, forms
... http, platform-browser, platform-browser-dynamic
... platform-server, router
@angular/cdk: 5.2.2
@angular/cli: 1.7.1
@angular/material: 5.2.2
@angular-devkit/build-optimizer: 0.4.2
@angular-devkit/core: 0.0.20
@angular-devkit/schematics: 0.0.34
@ngtools/json-schema: 1.1.0
@ngtools/webpack: 1.10.1
@schematics/angular: 0.3.2
@schematics/package-update: 0.3.2
typescript: 2.6.2
webpack: 3.11.0
我试图删除node_modules,npm cache clean,节点安装,但没有一个工作。
答案 0 :(得分:7)
如果您只需要在项目中使用@Angular/Cli
而不使用Angular DevKit的所有库提供的扩展功能(描述为here)。
在package.json
中,您只需在devDependencies中进行设置即可
"@angular-devkit/core":"0.4.6"
忽略了您可以完全删除的schematics
和package-update
等其他库。
通过这种方式,您可以使用没有像这样的问题的快捷方式别名来创建新组件
ng g c my-new-component
使用"@angular/cli": "1.7.3"
答案 1 :(得分:2)
卸载现有的软件包@angular-devkit/core
和@angular-devkit/schematics
,并安装最新的软件包对我有帮助
npm uninstall @angular-devkit/core
npm uninstall @angular-devkit/schematics
然后安装最新版本
npm install @angular-devkit/core --save-dev
npm install @angular-devkit/schematics --save-dev
答案 2 :(得分:1)
我有同样的问题。我将包var children = document.body.getElementsByTagName('*');
var id='userScreenName';
var elements = [], child;
for (var i = 0, length = children.length; i < length; i++) {
child = children[i];
if (child.id.indexOf(id)>-1)
elements.push(child);
};
return elements[0].id;
更新为最新的包,它开始工作。
希望这也能解决您的问题。
答案 3 :(得分:1)
有用的代码段:
"@angular-devkit/core": "^0.6.8",
"@angular-devkit/schematics": "^0.6.8",
"@angular/cli": "^1.7.4",
"@angular/compiler-cli": "^5.1.1",