Angular CLI生成组件问题

问题描述 投票:4回答:8

使用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
angular angular-cli
8个回答
4
投票

对具有相同问题的任何人进行回答/更新。

你可以cd到组件目录,ng g c将正常工作。

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

npm i @angular/[email protected]安装旧版本

然后ng g c your-component将正常工作在根文件夹中。


3
投票

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

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

ng generate component componentName --module=app.module

2
投票

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

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


1
投票

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

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

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

因此您需要更换

"src": "" 

"src": "app"

然后运行ng g c my-component


1
投票

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

在我的情况下,首先是主应用程序项目,然后是e2e项目。我切换了它们,CLI又返回到相应的src / app文件夹中创建原理图。

我将推测无论ng-update对配置做什么,都会导致原理图生成器查看angular.json中项目列表中的最后一个。


0
投票

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

ng g c mycomponent

0
投票

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

  • 最好的方法是使用Angular CLI和以下命令ng generate component sampleComponentng g c sampleComponent

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

  1. 您必须位于主根(my-app)项目文件夹或src / app文件夹中,然后使用generate组件命令。
  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/
  • 将目录更改为app cd app/

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


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

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.