找不到 NgModule。使用 skip-import 选项跳过 NgModule 中的导入

Posted

技术标签:

【中文标题】找不到 NgModule。使用 skip-import 选项跳过 NgModule 中的导入【英文标题】:Could not find an NgModule. Use the skip-import option to skip importing in 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)但仍然遇到同样的问题。还不知道这意味着什么。

【问题讨论】:

请试试这个方法***.com/a/53696599/2668045应该没问题。 【参考方案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。您将其重命名为其他名称,或者甚至可能有多个。在这种情况下,有两种可能的解决方案:

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

    ng g 组件 mycomponent --skip-import

    您使用-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】:

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

    第二种方式: 从您的 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 命令就起作用了!

【讨论】:

以上是关于找不到 NgModule。使用 skip-import 选项跳过 NgModule 中的导入的主要内容,如果未能解决你的问题,请参考以下文章

尽管运行“npm i @types/node --global”,为啥我得到“找不到名称'NgModule'”?

找不到“HomeModule”的 NgModule 元数据中的错误

错误:找不到“AppModule”的 NgModule 元数据

javascript 错误:找不到组件工厂。你有没有把它添加到@ NgModule.entryComponents

@NgModule 中各个属性详解

出现在 AppModule 的 NgModule.imports 中,但无法解析为 NgModule 类