Angular CLI生成组件问题

时间:2018-06-17 12:45:48

标签: angular angular-cli

使用ng g c my-component生成新组件时出现错误:

  

无法找到NgModule。使用skip-import选项跳过   在NgModule中导入。

如果我然后使用skip-import选项,Angular会在我的e2e文件夹中生成组件。

我假设它与我的angular.json文件有关,在我运行升级之前曾经被称为angular-cli.json,这无疑是导致问题的原因,因为似乎有一些问题结构变化。

有没有办法解决这个问题,而无需使用CLI创建新项目,然后手动复制文件..?

ng g c从root“my-app”文件夹运行。

文件夹结构:

my-app
 - dist
 - e2e
 - node_modules
 - src
   - app
   - etc
在my-app文件夹中

angular.json

**Angular Versions:**
@angular-devkit/architect         0.6.8
@angular-devkit/build-angular     0.6.8
@angular-devkit/build-optimizer   0.6.8
@angular-devkit/core              0.6.8
@angular-devkit/schematics        0.6.8
@angular/cli                      6.0.8
@ngtools/webpack                  6.0.8
@schematics/angular               0.6.8
@schematics/update                0.6.8
rxjs                              5.5.2
typescript                        2.5.3
webpack                           4.8.3

8 个答案:

答案 0 :(得分:4)

回答/更新有相同问题的人。

您可以cd进入组件目录,ng g c可以正常工作。

为了能够从根文件夹运行此文件,我将@ angular / cli版本回滚到了6.0.3版。我以前安装了6.0.8。

npm i @angular/cli@6.0.3安装旧版本

ng g c your-component然后将照常从根文件夹开始工作。

答案 1 :(得分:3)

我闻到 ng 在app root上找到多个模块文件,请在生成组件时提供模块

ng generate component componentName --module=<MODULE-NAME>

ng generate component componentName --module=app.module

答案 2 :(得分:2)

将项目从Angular 4.3升级到Angular 6后,我遇到了同样的问题。问题出在[project-name] -e2e项目下angular.json中的sourceRoot值。它设置为“ e2e”。与最初使用Angular 6创建的其他项目(未升级)进行比较时,我注意到它们在e2e项目上为sourceRoot指定了一个空字符串。将我的配置更改为该配置后,此问题已解决。

请注意,主要项目的sourceRoot仍应为“ src”,您只需要在e2e项目上将其更改为空字符串即可。

答案 3 :(得分:1)

我的一个项目中遇到了同样的问题。

点击此处:Angular CLI in ASP.NET Core 2 Angular template?来自@Ashkan Rahmani的回答。

对于Angular 6项目,您需要转到angular.json,找到&#34; root&#34;在文件内部并将其设置为src文件夹的子项名称(在大多数情况下,它是 app )。

因此您需要替换

"src": "" 

"src": "app"

然后运行ng g c my-component

答案 4 :(得分:1)

我通过简单地将angular.json文件中的项目对象移动到项目列表的底部,在.net core 2配置的Angular CLI应用程序中解决了此问题。

在我的情况下,主要的应用程序项目是第一个,其次是e2e项目。我切换了它们,然后CLI重新回到在适当的src / app文件夹中创建原理图的位置。

我会推测,无论ng-update对配置执行什么操作,都会使逻辑示意图生成器查看angular.json项目列表中的最后一个内容。

答案 5 :(得分:0)

您的命令声明:ng g c my-component可能会导致问题。请尝试

ng g c mycomponent

答案 6 :(得分:0)

如果要在Angular项目中创建新组件

  
      
  • 最好的方法是通过以下命令使用Angular CLI   ng generate component sampleComponent   要么   ng g c sampleComponent
  •   

在这种情况下要考虑的两个主要方面是

  1. 您必须位于主 root 项目(my-app)中,或者位于 src / app 文件夹中,然后使用generate component命令。
  2. 无论哪种方式,都会在 src / app 文件夹中创建新生成的组件,并将这些新组件导入app.module.ts文件
  
      
  • 但是对于您来说,我强烈感觉您可能位于 e2e 文件夹中,这就是收到此消息的原因
  •   

enter image description here

  
      
  • ,如果您通过使用ng generate component sampleComponent --skip-import来遵循它,则会在e2e文件夹中创建组件。 (如果您位于 src 文件夹中但位于 app 文件夹之外,则情况类似。这会在src文件夹中创建一个新组件。)
  •   

遵循这些步骤

  • 从终端(MAC OS)的e2e文件夹中退出 cd .. 注意:您还可以在此处本身使用ng g c sampleComponent,这将在src / app中创建组件。
  • 将目录更改为src cd src/
  • 将目录更改为应用 cd app/

使用命令-这将在src / app中创建组件。

答案 7 :(得分:0)

当我尝试生成一个新组件时,我也遇到了同样的问题,我不知道它背后的实际原因,但是我猜它在那里是因为角度更新。 我已经解决了,您可以尝试:

使用:ng g c (component Name) --project=(project Name*) --module=app

项目名称=您可以在angular.json文件中找到它

它将被称为

 "$schema": "./node_modules/@angular-devkit/core/src/workspace/workspace-schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    ***"angular.io-example"***: {
      "root": "",
      "projectType": "application",

您的项目名称为angular.io-example