Kiedy próbuję utworzyć komponent w kątowym cli, pokazuje mi ten błąd. Jak się tego pozbyć?
Błąd: pasuje więcej niż jeden moduł. Użyj opcji pomiń import, aby pominąć importowanie komponentu do najbliższego modułu.
Używam wersji kątowej cli: 1.4.1
Określ moduł za pomocą parametru --module. Na przykład jeśli głównym modułem jest app.module.ts, uruchom to:
ng g c new-component --module app
Lub jeśli jesteś w innym katalogu, to
ng g c component-name --module ../
ng g c admin/manageUsers ---module ../app
Spróbuj tego: działa dla mnie
ng generate component componentName --module=app.module
źródło
Jest to spowodowane tym, że generacja próbowała dodać komponent do modułu, tj. Dodać tę linię
ale znaleziono 2 moduły.
Jak powiedziano tutaj , naprawili to tak, że dopóki w głównym folderze src / app masz tylko 1 moduł, nic ci nie jest, więc po prostu przenieś moduły pomocnicze do podfolderu.
W przeciwnym razie musisz użyć
--module
źródło
modules
podfolderu i wszystko jest teraz w porządku.To działa dla mnie
źródło
Tylko mała aktualizacja odpowiedzi Zishy.
W moim projekcie wszystkie moduły zostały umieszczone w folderze o nazwie „moduły”, a wszystkie komponenty zostały umieszczone w folderze „components” w „src / app”
więc aby utworzyć komponent pod określoną ścieżką, użyłem następującej składni:
przykład:
źródło
Angular CLI: 6.0.8
Węzeł: 10.4.0
OS: linux x64
Angular: 6.0.4
W przypadku modułu funkcji (np. Manager.module.ts w podfolderze np. „/ Manager”) z modułem routingu zewnętrznym w osobnym NgModule (np. Manager-routing.module.ts ) komunikat o błędzie:
Więcej niż jeden moduł pasuje. Użyj opcji pomiń import, aby pominąć importowanie komponentu do najbliższego modułu.
nie pojawia się, a komponent został poprawnie wygenerowany i dodany do modułu manager.module.ts .
Ale bądź ostrożny z konwencją nazewnictwa! nazwa modułu routingu musi kończyć się na „ -routing ”!
Jeśli moduł routingu otrzyma nazwę taką jak np. Manager-router.module.ts , CLI narzeka na komunikat o błędzie i oczekuje, że udostępnisz opcję --module, aby automatycznie dodać import komponentu:
lub
jeśli wolisz ręcznie dodać import komponentu
źródło
-
Załatwiło sprawę! Miałemlib-name.routing.module.ts
zamiastlib-name-routing.module.ts
.Istnieją dwa sposoby rozwiązania tego problemu.
1) Pomiń (używając polecenia --skip-import in) domyślny import i utwórz komponent, a po utworzeniu komponentu zaimportuj go ręcznie, gdziekolwiek chcesz go użyć.
2) Podaj nazwę modułu wprost tam, gdzie chcesz go zaimportować
źródło
źródło
Wystąpił błąd poniżej podczas próby utworzenia nowego komponentu w folderze.
błąd: pasuje więcej niż jeden moduł. Użyj opcji pomiń import, aby pominąć importowanie komponentu do najbliższego modułu.
Użyłem poniżej polecenia i nowy komponent został pomyślnie utworzony w folderze.
źródło
Mój projekt został utworzony za pomocą Visual Studio Community 2017 i tworzy 3 oddzielne moduły: app.browser.module, app.server.module i app.shared.module
Aby utworzyć moje komponenty, sprawdziłem powyższe odpowiedzi i znalazłem mój moduł jako app.shared.module.
Więc uruchamiam:
źródło
Jeśli w folderze aplikacji znajduje się więcej niż jeden moduł, generowanie komponentu za pomocą poniższego polecenia nie powiedzie się:
Powodem jest to, że kątowy interfejs CLI wykrywa wiele modułów i nie wie, w którym module dodać komponent. Musisz więc wyraźnie wskazać, który moduł zostanie dodany:
źródło
jeśli tworzysz w określonym module, przejdź do tej ścieżki i uruchom ng gc nazwa_komponentu
w przeciwnym razie stwórz moduł najpierw ng moduł modulename
cd arc / app / modulename przejdź do ścieżki modulename i utwórz komponent
źródło
wypróbuj nagłówek komponentu g - moduł aplikacji, to działa dla mnie
źródło
app.routing.module.ts
stąd błądjeśli masz więcej niż jeden moduł, musisz podać nazwę modułu
źródło
gdy masz wiele
module.ts
plików w module, musisz określić, dla którego pliku modułu generujesz komponent.na przykład mam udostępniony folder modułu, w którym mam
shared.module.ts
imaterial.module.ts
podoba mi się toi chcę wygenerować
sidebar
komponent,shared.module.ts
a następnie uruchomię następujące poleceniejeśli chcesz wyeksportować komponent, uruchom następujące polecenie
źródło
Kątowy CLI: 8.3.4 Węzeł: 10.16.3 Angualr: 4.2.5
Użyłem polecenia „dotnet new angular” do wygenerowania projektu i wygenerowałem 3 różne moduły w folderze aplikacji (chociaż prosty test z nową nazwą projektu generuje tylko jeden moduł.
zobacz moduły w swoim projekcie i zdecyduj, który moduł chcesz - a następnie podaj nazwę
Możesz przeczytać więcej o modułach tutaj: https://angular.io/guide/architecture-modules
źródło
W moim przypadku wydaje się, że ng nie jest zarejestrowany na mojej ścieżce środowiska. Używam polecenia npm run do uruchamiania poleceń ng. Pamiętaj, aby przekazywać argumenty, potrzebujesz dodatkowej - zgodnie ze specyfikacją uruchomienia npm.
Przykład: npm uruchamianie komponentów / harmonogramu gc - --module = app
Lub: npm uruchom ng gc components / scheduling - --skip-import
źródło
Miałem to ostrzeżenie, gdy miałem to w
angular.json
konfiguracji:Po zmianie na
"app"
wszystko działało idealnie dobrze.źródło
Wystarczy dodać do tego kolejną informację dla każdego takiego, jak ja, który zdarza się, że ma tylko jedną aplikację.
Miałem aplikację skonfigurowaną z głównym app.module.ts, a routing z modułem routingu znajdował się we własnym folderze w głównej aplikacji. Przeszedłem i zrobiłem trochę „sprzątania”, ponieważ miałem kilka innych rzeczy, które trzeba było lepiej zorganizować. Jedną rzeczą, którą zrobiłem, było przeniesienie routing.module.ts do folderu głównego; ponieważ był to jedyny plik w folderze, pomyślałem, że nie potrzebuje własnego folderu.
Na początku działało to dobrze, ale następnym razem próbowałem wygenerować nowy komponent (jakiś czas później, za pośrednictwem WebStorm IDE), ale ten komunikat nie powiódł się. Po przeczytaniu tego spróbowałem ponownie umieścić moduł routingu w osobnym folderze i znów zadziałało.
Pamiętaj więc o ostrzeżeniu dla innych, nie przesuwaj modułu routingu do folderu głównego! Jestem pewien, że istnieją również inne sposoby radzenia sobie z tym, ale jestem zadowolony z tego, że na razie jest w swoim własnym folderze i używa generatora IDE, tak jak poprzednio.
źródło
Musisz podać nazwę modułu, np
Gdzie
module-name
powinna być aktualizacja z nowo utworzonym komponentem.źródło
Jako hack, poniżej kroków, działało dla mnie.
1) Przenieś pliki * .module.ts z src / app do lokalizacji poza projektem.
2) Wykonaj polecenie, aby utworzyć komponent
[ng g c component-name]
3) Przenieś pliki * .module.ts z powrotem do src / app /
źródło