找不到 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 false
或ng 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 元数据