Erro: Mais de um módulo corresponde. Use a opção skip-import para pular a importação do componente para o módulo mais próximo


317

Quando tento criar um componente no CLI angular, ele está me mostrando esse erro. Como faço para me livrar dele ?

Erro: Mais de um módulo corresponde. Use a opção skip-import para pular a importação do componente para o módulo mais próximo.

Estou usando a versão angular do cli: 1.4.1

Respostas:


691

Especifique o módulo usando o parâmetro --module Por exemplo, se o módulo principal for app.module.ts, execute o seguinte:

ng g c new-component --module app

Ou se você estiver em outro diretório,

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

23
no meu caso, foi # ng g c admin/manageUsers ---module ../app
Alexus1024 18/17/17

no meu caso, eu tinha que ter certeza de que estava na pasta do aplicativo ao fazê-lo
trees_are_great

80

Tente isto: Está funcionando para mim

ng generate component componentName --module=app.module


1
Funciona para mim. THX. [CLI angular: 1.7.4 // Nó: 9.8.0 // SO: linux x64 // Angular: 5.2.9]
NajlaBioinfo

53

Isso é causado desde que a geração tentou adicionar seu componente a um módulo, ou seja, adicionar esta linha

import { MyComponent } from './Components/my-component/my-component.component';

mas encontrou 2 módulos.

Conforme declarado aqui , eles o consertaram em uma situação em que, desde que na pasta raiz src / app você tenha apenas 1 módulo, você esteja bem, então mova os módulos secundários para uma subpasta.

Caso contrário, você tem que usar --module


9
Essa parece a resposta mais útil, evitando que você precise especificar o módulo o tempo todo, obrigado.
Arwin

Sim. Movi meus módulos adicionais para uma modulessubpasta, e tudo está bom agora.
esmagar

1
Graças para recordar, finalmente, que o segundo módulo encontrado: RoutingModule, e mudou-se a sub-pasta
Zheng Kai

36

Está funcionando para mim

ng g component component-name --skip-import

7
Uma coisa importante a ser observada é que esse método não importa automaticamente esses componentes no app.module.ts. Portanto, isso deve ser feito manualmente.
Gel

11

Apenas uma pequena atualização da resposta de Zisha.

No meu projeto, todos os módulos foram colocados em uma pasta chamada "modules" e todos os componentes foram colocados na pasta "components" em "src / app"

estrutura de pastas

para criar um componente sob um caminho específico, usei a seguinte sintaxe:

ng gc components_path / component_name --module modules_path / module_name

exemplo:

ng gc components / login --module modules / app


1
Eu não sei, mas, não é um "melhor' prática de design para colocar os componentes em seus módulos relacionados?
Ojonugwa Jude Ochalifu

8

CLI angular: 6.0.8
Nó: 10.4.0
SO: linux x64
Angular: 6.0.4

Caso exista um módulo de recurso (por exemplo, manager.module.ts dentro da subpasta "/ manager"), com o módulo de roteamento externalizado no NgModule separado (por exemplo, manager-routing.module.ts ), a mensagem de erro:

Mais de um módulo corresponde. Use a opção skip-import para pular a importação do componente para o módulo mais próximo.

não aparece e o componente é gerado corretamente e incluído no módulo manager.module.ts .

Mas tenha cuidado com a convenção de nomenclatura! o nome do módulo de roteamento deve terminar com " -routing "!

Se o módulo de roteamento receber um nome como, por exemplo, manager-router.module.ts , a CLI se queixará da mensagem de erro e esperará que você forneça a opção --module para adicionar automaticamente a importação do componente:

ng generate component some-name --module=manager.module.ts

ou

ng generate component some-name --skip-import

se você preferir adicionar a importação do componente manualmente


O -fez o truque! Eu tinha em lib-name.routing.module.tsvez de lib-name-routing.module.ts.
precisa saber é

7

Existem duas maneiras de resolver esse problema.

1) Pule (usando --skip-import no comando) a importação padrão e crie o componente; assim que o componente for criado, importe-o manualmente, sempre que você quiser usá-lo.

ng generate component my-component --skip-import

2) Forneça explicitamente o nome do módulo para onde você deseja que ele seja importado

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

4

Quando app ou lib possui vários módulos aninhados

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

CLI angular

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

Resultado

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

3

Eu estava recebendo o erro abaixo ao tentar criar um novo componente em uma pasta.

erro: Mais de um módulo corresponde. Use a opção skip-import para pular a importação do componente para o módulo mais próximo.

Eu usei o comando abaixo e o novo componente foi criado com êxito em uma pasta.

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

2

Meu projeto foi criado usando a Comunidade do Visual Studio 2017 e cria 3 módulos separados: app.browser.module, app.server.module e app.shared.module

Para criar meus componentes, verifiquei as respostas acima e achei meu módulo como app.shared.module.

Então, eu corro:

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

2

Quando houver mais de um módulo na pasta do aplicativo, a geração de um componente com o comando abaixo falhará:

ng generate component New-Component-Name

O motivo é que a CLI angular detecta vários módulos e não sabe em qual módulo adicionar o componente. Portanto, você precisa mencionar explicitamente qual componente do módulo será adicionado:

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

1

se você estiver criando em um módulo específico, vá para esse caminho e execute ng gc componentname

caso contrário, crie o módulo primeiro ng g módulo nome do módulo

cd arc / app / modulename vá para o caminho do modulename e crie o componente


0

tente ng g cabeçalho componente - aplicativo módulo é trabalho para mim


1
trabalha em angular 6. Mudei as rotas para, app.routing.module.tsportanto, o erro
aprendendo ...

0

quando você tiver mais de um módulo, precisará especificar o nome do módulo

 ng g c componentName --module=modulename.module 

0

CLI angular: 8.3.1

Quando você possui vários module.tsarquivos dentro de um módulo, precisa especificar para qual arquivo de módulo você está gerando componente.

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

por exemplo, eu tenho pasta módulo compartilhado dentro do qual eu tenho shared.module.tse material.module.tsassim

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

e eu quero gerar sidebarcomponente para shared.module.ts então eu vou executar o seguinte comando

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

se você deseja exportar o componente, execute o seguinte comando

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

0

CLI angular: 8.3.4 Nó: 10.16.3 Angualr: 4.2.5

Eu usei o comando "dotnet new angular" para gerar o projeto, e ele gerou 3 módulos diferentes na pasta do aplicativo (embora um teste simples com o novo nome do projeto gere apenas um único módulo.

veja os módulos em seu projeto e decida qual módulo você deseja - depois especifique o nome

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

Você pode ler mais sobre os módulos aqui: https://angular.io/guide/architecture-modules


0

No meu caso, parece que ng não está registrado no caminho do meu ambiente. Eu tenho usado o comando npm run para executar os comandos ng. Esteja ciente de que, para passar argumentos, você precisa de um extra - conforme a especificação de execução do npm.

Exemplo: npm executa componentes / programação do gc - --module = app

Ou: npm executa componentes / programação do gc - --skip-import


0

Eu tive esse aviso quando tinha isso em angular.jsonconfig:

"prefix": "app_ng"

Quando alterado para "app"tudo funcionou perfeitamente bem.


0

Apenas para adicionar outra informação a alguém assim como eu, que acontece com apenas um aplicativo.

Eu configurei meu aplicativo com o app.module.ts principal e fiz o roteamento com o módulo de roteamento em sua própria pasta, no aplicativo principal. Eu passei por isso e fiz algumas 'limpezas', pois tinha algumas outras coisas que precisavam ser melhor organizadas. Uma coisa que fiz foi mover o routing.module.ts para a pasta raiz; já que era o único arquivo na pasta, achei que não precisava de sua própria pasta.

Isso funcionou bem no começo, mas na próxima vez que tentei gerar um novo componente (algum tempo depois, através do IDE WebStorm), ele falhou com esta mensagem. Depois de ler isso, tentei colocar o módulo de roteamento novamente em uma pasta separada e funcionou novamente.

Portanto, observe os avisos a outras pessoas, não mova o módulo de roteamento para a pasta raiz! Tenho certeza de que existem outras maneiras de lidar com isso também, mas estou feliz com isso em sua própria pasta por enquanto e usando o gerador de IDE como eu estava anteriormente.


0

Você deve fornecer o nome do módulo especificado como

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

Onde module-namedeve ser que você deseja atualizar com o componente recém-criado.


-1

Como um hack, abaixo das etapas, funcionou para mim.

1) Mova os arquivos * .module.ts de src / app para um local fora do projeto.

2) Executar comando para criar componente [ng g c component-name]

3) Volte os arquivos * .module.ts para src / app /


Para esta solução, verifique se o componente também está registrado no módulo relevante. A execução do comando usando o cli deve fazê-lo. Eu acho que o ponto negativo foi por causa desse problema.
Homa Pourmohammadi 13/09/19
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.