错误:多个模块匹配.使用skip-import选项跳过将组件导入最近的模块

Ish*_*Man 233 angular

当我尝试在角度cli中创建一个组件时,它向我显示了这个错误.我怎么摆脱它?

错误:多个模块匹配.使用skip-import选项跳过将组件导入最近的模块.

我正在使用angular cli版本:1.4.1

小智 525

使用--module参数指定模块.例如,如果主模块是app.module.ts,请运行以下命令:

ng g c new-component --module app
Run Code Online (Sandbox Code Playgroud)

或者,如果您在其他目录中

ng g c component-name --module ../
Run Code Online (Sandbox Code Playgroud)

  • 在我的情况下,它是`ng gc admin/manageUsers --- module ../ app` (19认同)

Shu*_*ori 54

试试这个:它对我有用

__PRE__


bre*_*per 43

这是因为一代人试图将您的组件添加到模块,即添加此行

import { MyComponent } from './Components/my-component/my-component.component';
Run Code Online (Sandbox Code Playgroud)

但它找到了2个模块.

如前所述在这里,他们是固定的地方,只要在根的src/app文件夹,你只有1个模块,你没事的情况,所以只是将次级模块移动到子文件夹.

否则你必须使用 --module

  • 这似乎是最有用的答案,让您不必一直指定模块,谢谢. (9认同)

Nae*_*hir 34

对我来说这个命令有效:

ng g c new-component --module app
Run Code Online (Sandbox Code Playgroud)


小智 25

它对我有用

ng g component component-name --skip-import
Run Code Online (Sandbox Code Playgroud)

  • 需要注意的一件重要事情是,此方法不会自动导入app.module.ts中的这些组件.所以这必须手动完成. (4认同)

Uni*_*der 10

有两种方法可以解决这个问题。

1) 跳过(在命令中使用 --skip-import)默认导入和创建组件,一旦创建了组件,就可以在任何您想要使用的地方手动导入它。

ng generate component my-component --skip-import
Run Code Online (Sandbox Code Playgroud)

2)在您希望导入的位置明确提供模块名称

ng generate  component  my-component --module=my-module.module
Run Code Online (Sandbox Code Playgroud)


小智 9

只是Zisha答案的一个小小的更新.

在我的项目中,所有模块都放在一个名为"modules"的文件夹中,所有组件都放在"src/app"下的"components"文件夹中

文件夹结构

所以要在特定路径下创建组件,我使用以下语法:

ng gc components_path/component_name --module modules_path/module_name

例如:

ng gc components/login --module modules/app

  • 我不知道,但是,将组件放置在相关模块中不是“更好”的设计实践吗? (2认同)

pch*_*que 7

Angular CLI:6.0.8
节点:10.4.0
OS:linux x64
Angular:6.0.4

如果有一个功能模块(例如,在例如"/ manager"子文件夹中的manager.module.ts),路由模块外部化为单独的NgModule(例如manager-routing.module.ts),则会显示错误消息:

多个模块匹配.使用skip-import选项跳过将组件导入最近的模块.

没有出现,组件已正确生成并添加到manager.module.ts模块中.

但要小心命名惯例!路由模块的名称必须以" -routing " 终止!

如果为路由模块指定了一个名称,例如manager-router.module.ts,CLI将会报错错误消息并希望您提供--module选项以自动添加组件导入:

ng generate component some-name --module=manager.module.ts
Run Code Online (Sandbox Code Playgroud)

要么

ng generate component some-name --skip-import
Run Code Online (Sandbox Code Playgroud)

如果您希望手动添加组件的导入


SoE*_*zPz 6

当 app 或 lib 有多个嵌套模块时

myApp
  > src
    > app
      app.module.ts
      > routes
        > login
          > auth
          login.module.ts
Run Code Online (Sandbox Code Playgroud)

角 CLI

ng g component routes/login/auth/my-auth --module=routes/login/login.module.ts 
Run Code Online (Sandbox Code Playgroud)

NRWL NX 角 CLI

ng g component routes/login/auth/my-auth --project=myApp --module=routes/login/login.module.ts
Run Code Online (Sandbox Code Playgroud)

结果

myApp
  > src
    > app
      app.module.ts
      > routes
        > login
          > auth
            > my-auth
              my-auth.component.ts etc...
          login.module.ts
Run Code Online (Sandbox Code Playgroud)


Sco*_*niz 6

就我而言,ng 似乎没有注册到我的环境路径中。我一直在使用 npm run 命令来运行 ng 命令。请注意,为了传递参数,--根据 npm run 规范,您需要额外的参数。

例子:

npm run ng g c components/scheduling **--** --module=app
Run Code Online (Sandbox Code Playgroud)

或者:

npm run ng g c components/scheduling **--** --skip-import
Run Code Online (Sandbox Code Playgroud)


Sha*_*ain 5

尝试在文件夹下创建新组件时出现以下错误。

错误:多个模块匹配。使用skip-import选项跳过将组件导入到最近的模块中。

我使用了以下命令,并在文件夹下成功创建了新组件。

 ng g c folderName/my_newComponent ---module ../app
Run Code Online (Sandbox Code Playgroud)


小智 5

您必须给出指定的模块名称,例如

ng g c your-component --module module-name
Run Code Online (Sandbox Code Playgroud)

module-name您应该在哪里使用新创建的组件进行更新。