【问题标题】:Could not find an NgModule. Use the skip-import option to skip importing in NgModule找不到 NgModule。使用 skip-import 选项跳过 NgModule 中的导入
【发布时间】:2018-12-14 12:04:55
【问题描述】:

当我使用 CLI 创建一个新组件时,我收到这篇文章主题的错误:ng g c my-component --project=my-project(未创建组件)

我看过其他带有相同错误消息的帖子,但没有一个帖子也包含 Nrwl/Nx,我相信这在某种程度上涉及。项目从 Ng4 开始,升级到 Ng6。

环境:

  • Angular CLI:6.0.8
  • 节点:8.9.4
  • 操作系统:win32 x64
  • 角度:6.0.6
  • @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/cdk 6.3.1
  • @angular/cli 6.0.8
  • @angular/material 6.3.1
  • @ngtools/webpack 6.0.8
  • @schematics/angular 0.6.1
  • @schematics/更新 0.6.8
  • rxjs 6.2.1
  • 打字稿 2.7.2
  • webpack 4.8.3
  • nrwl/nx 6.1.0

更新 #1

我尝试完全删除 --project 标志(所以只是 ng g c my-component)但仍然遇到同样的问题。还不知道这意味着什么。

【问题讨论】:

标签: angular nrwl


【解决方案1】:

快速修复

1) 更改当前目录在cmd/terminal到src/app

cd src/app (linux)

cd .\src\app\(窗口)

2) 立即运行命令

ng g c myComponent

【讨论】:

  • 之所以如此,是因为您项目的默认 src/app 文件夹层次结构已更改。因此,任何其他不适合这种情况的方法都将不起作用。当您使用 cli 生成默认项目时,您不必这样做。
  • 这不是唯一的原因,如果您在与src/app 不同的文件夹中运行ng generate component,您将收到该错误。
【解决方案2】:

组件的生成旨在做两件事:

  • 为组件创建源代码
  • 模块中注册组件(默认在app.module.ts中)

问题是,您没有app.module.ts。您将其重命名为其他名称,或者甚至可能有多个。在这种情况下,有两种可能的解决方案:

  1. 您手动注册组件。 (最简单)

    ng g 组件 mycomponent --skip-import

  2. 您使用-m 开关指定模块。 (可能坏了)这里有一个很长的帖子:https://github.com/nrwl/nx/issues/526

【讨论】:

  • 或者您将 app.module.ts 移动到了另一个文件夹,例如 modules 文件夹
【解决方案3】:

从 app.module.ts 文件所在的位置运行组件生成命令(ng g c component-name)。

【讨论】:

    【解决方案4】:

    您不在应用文件夹内... 在 windows 上 cd app,然后运行命令

    【讨论】:

      【解决方案5】:

      您在 cmd 窗口中的当前目录很重要。 从项目中的“src/app”文件夹运行此命令。 它应该可以工作。

      【讨论】:

        【解决方案6】:

        工作 100%

        试试--skip-import

        ng g c mycomponent --skip-import
        

        或更改目录 src/app ;

        点击应用打开终端->输入命令ng g c 'your component name'并回车

        我认为这些是您点击一次并检查它的错误 https://i.stack.imgur.com/RSG7c.png

        【讨论】:

          【解决方案7】:

          我从 angular.json 文件中删除了 "cli": { "defaultCollection": "@nativescript/schematics" } 行,它对我有用。

          【讨论】:

            【解决方案8】:
            1. 第一种方式
              我认为首先你必须进入你的应用程序文件夹,然后输入 cmd;
              ng g c your_com_name --spec false
              ng g c your_com_name
              它肯定会创建您的组件或解决您的问题。

            2. 第二种方式
              从您的 angular.json->projects:
              中删除您的 e2e 绝对

              { 
                  your_project_name-e2e:{}
              }
              

              例如:my-first-app-e2e

              {
                    "root": "e2e/",
                    "projectType": "application",
                    "architect": {
                      "e2e": {
                        "builder": "@angular-devkit/build-angular:protractor",
                        "options": {
                          "protractorConfig": "e2e/protractor.conf.js",
                          "devServerTarget": "my-first-app:serve"
                        }
                      },
                      "lint": {
                        "builder": "@angular-devkit/build-angular:tslint",
                        "options": {
                          "tsConfig": "e2e/tsconfig.e2e.json",
                          "exclude": [
                            "**/node_modules/**"
                          ]
                        }
                      }
                    }
                  }
              

            【讨论】:

              【解决方案9】:

              这是一个很奇怪的答案,但问题是因为我只在 src 目录中打开了我的项目。重新打开整个项目文件夹可解决此问题。

              【讨论】:

              • 我认为这是对这个问题最简单的答案。执行 Angular CLI 命令时,用户应该位于根文件夹中。
              【解决方案10】:

              您可能已将文件 app.module.ts 更改为其他文件夹(在文件夹 app 之外)。 Ionic 没有找到该文件。

              【讨论】:

                【解决方案11】:

                我最终完全删除了node_modules,清除了纱线缓存,然后运行yarn 重新安装所有包。我还编辑了我的 angular.json 文件,以便我的所有应用程序和库的路径看起来像这样:

                "root": "libs/my-lib",
                "sourceRoot": "libs/my-lib/src"
                

                我不确定哪些解决了问题,但现在一切似乎都正常。至少眼前的问题消失了。

                【讨论】:

                  【解决方案12】:

                  我遇到了同样的问题,在 angular.json 文件中,我搜索了 my-project-e2e(将 my-project 替换为您的项目名称) 然后我改变了:

                  "root": """root": "e2e" 并保存了它。一切都恢复正常了。

                  解决方案在此link 中指定。

                  【讨论】:

                    【解决方案13】:

                    这也发生在我身上,在我的情况下,这是由于我在 app 文件夹之外生成了一个新组件,我在 app 文件夹中购买了新组件并且问题得到了解决。

                    【讨论】:

                      【解决方案14】:

                      确保您在正确的道路上(我的意思是在您正在工作的道路上) 所以只需通过打印工作目录(pwd)在控制台中验证这一点并更改它。这对我有用

                      【讨论】:

                        【解决方案15】:

                        请检查 .module.ts 文件的位置。我从 /src 文件夹运行此命令,而 app 模块位于 /src/app 文件夹中。

                        当从 /src/app 路径运行相同的命令时。它正在工作。

                        【讨论】:

                          【解决方案16】:

                          有同样的问题。原来与根组件的名称有某种关系。重命名回“app”解决了问题

                          【讨论】:

                            【解决方案17】:

                            我遇到了同样的问题。我的问题(在 ionic 4 中)是文件 app-routing.module.ts 丢失了。在添加新页面之前,我必须创建一个空页面:

                            import { NgModule } from '@angular/core';
                            import { PreloadAllModules, RouterModule, Routes } from '@angular/router';
                            
                            const routes: Routes = [
                                {
                                    path: '',
                                    redirectTo: 'home',
                                    pathMatch: 'full'
                                },
                            ];
                            
                            @NgModule({
                                imports: [
                                    RouterModule.forRoot(routes, { preloadingStrategy: PreloadAllModules })
                                ],
                                exports: [RouterModule]
                            })
                            export class AppRoutingModule { }
                            

                            【讨论】:

                              【解决方案18】:

                              从视觉工作室代码我做了一个: 右键单击应用程序文件夹->单击“在集成终端中打开->运行cmd:ng g组件用户。 已创建 4 个文件。成功了!

                              【讨论】:

                                【解决方案19】:

                                在终端输入 ** cd .\app\ ** 或输入“cd app + Tab”。进入 app 文件夹后,ng 命令就起作用了!

                                【讨论】:

                                  猜你喜欢
                                  • 2020-12-12
                                  • 2018-10-20
                                  • 2017-06-15
                                  • 2018-05-09
                                  • 1970-01-01
                                  • 2019-02-21
                                  • 2020-04-05
                                  • 1970-01-01
                                  相关资源
                                  最近更新 更多