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

时间:2017-09-12 11:08:28

标签: angular

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

  

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

我正在使用angular cli版本:1.4.1

22 个答案:

答案 0 :(得分:375)

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

ng g c new-component --module app

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

ng g c component-name --module ../

答案 1 :(得分:33)

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

--module

但它找到了2个模块。

如前所述here,他们修复了这种情况,只要在根src / app文件夹中只有1个模块,你就可以了,所以只需 移动第二个模块到子文件夹。

否则你必须使用{{1}}

答案 2 :(得分:31)

试试这个:这对我有用

ng generate component componentName --module=app.module

答案 3 :(得分:14)

这对我有用

ng g component component-name --skip-import

答案 4 :(得分:8)

Zisha的回答只是一个小小的更新。

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

folder structure

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

  

ng g c components_path / component_name --module modules_path / module_name

示例:

  

ng g c components / login --module modules / app

答案 5 :(得分:5)

Angular CLI:6.0.8
节点:10.4.0
操作系统: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

ng generate component some-name --skip-import

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

答案 6 :(得分:2)

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

1)跳过(在命令中使用--skip-import)默认的导入并创建组件,一旦创建了组件,则将其手动导入到您想使用它的任何地方。

ng generate component my-component --skip-import

2)在要导入的模块上明确提供模块名称

ng generate  component  my-component --module=my-module.module

答案 7 :(得分:1)

我的项目是使用Visual Studio Community 2017创建的,它创建了3个独立的模块:app.browser.module,app.server.module和app.shared.module

为了创建我的组件,我检查了上面的答案,发现我的模块是app.shared.module。

所以,我跑:

ng g c componentName --module=app.shared.module

答案 8 :(得分:1)

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

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

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

 ng g c folderName/my_newComponent ---module ../app

答案 9 :(得分:1)

如果要在特定模块中创建,请转到该路径并运行 ng g c组件名称

其他先创建模块 ng g模块的模块名

cd arc / app / modulename 转到模块名称路径并创建组件

答案 10 :(得分:0)

对我来说这个命令有效:

ng g c new-component --module app

答案 11 :(得分:0)

您必须给指定的模块名称

ng g c your-component --module module-name

您要在module-name中使用新创建的组件进行更新。

答案 12 :(得分:0)

只需为像我这样的碰巧只有一个应用程序的任何人添加另一条信息。

我使用主app.module.ts设置了我的应用程序,并且使用主应用程序下自己文件夹中的路由模块进行了路由。我经历了一些“清理工作”,因为我还有其他一些事情需要更好地组织。我做的一件事是将routing.module.ts移到根文件夹;因为它是文件夹中的唯一文件,所以我认为它不需要它自己的文件夹。

起初这很好,但是下一次我尝试生成一个新组件(一段时间后,通过WebStorm IDE)时,它失败并显示此消息。阅读完此内容后,我尝试将路由模块放回一个单独的文件夹中,然后又可以正常工作了。

因此请注意警告他人,请勿将路由模块移至您的根文件夹!我敢肯定还有其他方法可以处理此问题,但是我现在对它在自己的文件夹中并像以前一样使用IDE生成器感到满意。

答案 13 :(得分:0)

result.__doc__ = func.__doc__配置中有此警告时:

angular.json

更改为"prefix": "app_ng" 时,一切正常。

答案 14 :(得分:0)

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

示例: npm运行ng c组件/计划- --module = app

或: npm运行ng c组件/计划- --skip-import

答案 15 :(得分:0)

Angular CLI:8.3.4 节点:10.16.3 Angualr:4.2.5

我使用了“ dotnet新角度” 命令生成了项目,它已经在app文件夹中生成了3个不同的模块(尽管使用 ng new project-name 进行了简单的测试>只会生成一个模块。

查看项目中的模块并确定所需的模块-然后指定名称

ng g c componentName --module=[name-of-your-module]

您可以在此处阅读有关模块的更多信息: https://angular.io/guide/architecture-modules

答案 16 :(得分:0)

  

Angular CLI:8.3.1

当模块中有多个module.ts文件时,需要指定要为哪个模块文件生成组件。

ng g c modulefolder/componentname --module=modulename.module

例如,例如,我有一个共享模块文件夹,其中有shared.module.tsmaterial.module.ts这样的

shared
  > shared.module.ts
  > material.module.ts

,我想为sidebar生成shared.module.ts组件 然后我将运行以下命令

ng g c shared/sidebar --module=shared.module

如果要导出组件,请运行以下命令

ng g c shared/sidebar --module=shared.module --export

答案 17 :(得分:0)

  

当应用或库具有多个嵌套模块时

myApp
  > src
    > app
      app.module.ts
      > routes
        > login
          > auth
          login.module.ts
  

Angular CLI

ng g component routes/login/auth/my-auth --module=routes/login/login.module.ts 
  

NRWL NX Angular CLI

ng g component routes/login/auth/my-auth --project=myApp --module=routes/login/login.module.ts
  

结果

myApp
  > src
    > app
      app.module.ts
      > routes
        > login
          > auth
            > my-auth
              my-auth.component.ts etc...
          login.module.ts

答案 18 :(得分:0)

拥有多个模块时,需要指定模块名称

 ng g c componentName --module=modulename.module 

答案 19 :(得分:0)

在app文件夹下有多个模块时,使用以下命令生成组件将失败:

ng generate component New-Component-Name

原因是角度CLI会检测到多个模块,并且不知道要在哪个模块中添加组件。因此,您需要明确提及要添加的模块组件:

ng generate component New-Component-Name --module=ModuleName

答案 20 :(得分:0)

尝试g组件标头 - 模块应用 这对我有用

答案 21 :(得分:-1)

作为一个黑客,下面的步骤,为我工作。

1)将* .module.ts文件从src / app移动到项目外的位置。

2)执行命令以创建组件[ng g c component-name]

3)将* .module.ts文件移回src / app /