Angular CLI создает проблему с компонентом

При создании нового компонента с помощью ng g c my-component я получаю сообщение об ошибке:

Could not find an NgModule. Use the skip-import option to skip importing in NgModule.

Если я затем использую опцию пропуска импорта, Angular сгенерирует компонент в моей папке e2e.

Я предполагаю, что это как-то связано с моим файлом angular.json, который раньше назывался angular-cli.json до того, как я запустил ng upgrade, что, несомненно, вызвало проблему, поскольку, похоже, произошли некоторые структурные изменения.

Есть ли способ исправить это, не создавая новый проект с помощью интерфейса командной строки, а затем вручную копируя файлы ..?

ng g c запускается из корневой папки "my-app".

Структура папки:

my-app
 - dist
 - e2e
 - node_modules
 - src
   - app
   - etc

angular.json в папке my-app

**Angular Versions:**
@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/cli                      6.0.8
@ngtools/webpack                  6.0.8
@schematics/angular               0.6.8
@schematics/update                0.6.8
rxjs                              5.5.2
typescript                        2.5.3
webpack                           4.8.3

вы обновили свое приложение до Angular 6 с помощью команды ng update?

Pankaj Parkar 17.06.2018 14:47

Какова структура папок вашего проекта? Где (внутри какой папки) вы запускаете ng g c my-component?

Muhammad Vakili 17.06.2018 14:53

Да я неразумно запустил ngupdate. Правка - добавлена ​​структура папок. ng g c запускается из папки my-app

Mark Jones 17.06.2018 15:42

Попробуйте ng g c my-component --module app.module (или --module ../module.app, или сколько угодно родительских уровней).

Andy King 17.02.2019 04:06
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
4
4
14 941
8
Перейти к ответу Данный вопрос помечен как решенный

Ответы 8

Я чувствую, что нгнг> находит несколько файлов модулей в корне приложения, пожалуйста, укажите модуль при создании компонента

ng generate component componentName --module=<MODULE-NAME>

ng generate component componentName --module=app.module

Я получаю, что указанный модуль не существует, ошибка ... модуль, конечно же, существует.

Mark Jones 18.06.2018 12:43

Может потребоваться относительный путь, например --module=../app.module.

Andy King 17.02.2019 04:03

Заявление вашей команды: ng g c my-component может вызвать проблему. пожалуйста, попробуйте с

ng g c mycomponent

Использование дефисов в именах компонентов, как это, является стандартной практикой? Я все равно попробовал на всякий случай, получил ту же ошибку.

Mark Jones 18.06.2018 12:42

У меня была такая же проблема в одном из моих проектов.

Проверьте здесь: Angular CLI в шаблоне Angular ASP.NET Core 2? ответ от @Ashkan Rahmani.

Для проектов Angular 6 вам нужно перейти в angular.json, найти «root» внутри файла и установить его как имя дочернего элемента вашей папки src (в большинстве случаев это приложение).

Поэтому вам необходимо заменить

"src": "" 

с участием

"src": "app"

Затем запустите ng g c my-component

Ответ принят как подходящий

Ответ / обновление для всех, у кого такая же проблема.

Вы можете cd в каталог компонентов, и ng g c будет работать нормально.

Чтобы запустить это из корневой папки, я откатил свою версию @ angular / cli до версии 6.0.3. Раньше у меня была установлена ​​6.0.8.

npm i @angular/[email protected] для установки более старой версии

ng g c your-component будет нормально работать из корневой папки.

Я решил эту проблему в приложении Angular CLI, настроенном для .net core 2, просто переместив объект проекта в файле angular.json в конец списка проектов.

В моем случае первым был проект основного приложения, а за ним - проект e2e. Я переключил их, и интерфейс командной строки вернулся к созданию схем в соответствующей папке src / app.

Я предполагаю, что все, что ng-update делает с конфигурацией, заставляет генератор схем просматривать все, что находится последним в списке проектов в angular.json.

Если вы хотите создать новый компонент в проекте Angular

  • The best way is by using Angular CLI with the following command ng generate component sampleComponent or ng g c sampleComponent

В этом сценарии следует учитывать два основных аспекта:

  1. Вы должны находиться либо в основной папке проекта корень (my-app), либо внутри папки src / app, а затем использовать команды создания компонента.
  2. В любом случае новый сгенерированный компонент будет создан внутри папки src / app, а также будут импортированы эти новые компоненты в файл app.module.ts
  • But in your case, I am having a strong feeling that you might be in e2e folder, that is the reason why you got this message

  • and if you follow it by using ng generate component sampleComponent --skip-import that's creating the component in e2e folder. ( similar case if you are inside the src folder but outside the app folder- this creates a new component in src folder.)

Следуй этим шагам

  • выйти из папки e2e в терминале (MAC OS) cd ..Примечание: вы также можете использовать здесь сам ng g c sampleComponent, и это создает компонент внутри src / app.
  • сменить каталог на src cd src/
  • сменить каталог на приложение cd app/

используйте команду - это создает компонент в src / app.

Я также столкнулся с той же проблемой, когда пытался создать новый компонент, я не знаю фактической причины этого, но я предполагаю, что это там из-за обновления angular. Я решил это, но вы можете попробовать:

использование: ng g c (component Name) --project=(project Name*) --module=app

имя проекта = вы можете найти его в файле angular.json

это будет упомянуто как

 "$schema": "./node_modules/@angular-devkit/core/src/workspace/workspace-schema.json",
  "version": 1,
  "newProjectRoot": "projects",
  "projects": {
    ***"angular.io-example"***: {
      "root": "",
      "projectType": "application",

Ваш проект называется angular.io-example.

У меня была такая же проблема после обновления проекта с Angular 4.3 до Angular 6. Проблема оказалась в значении sourceRoot в angular.json в проекте [имя-проекта] -e2e. Было установлено «e2e». Сравнивая с другими проектами, изначально созданными с помощью Angular 6 (без обновления), я заметил, что у них есть пустая строка, указанная для sourceRoot в проекте e2e. После изменения моей конфигурации на эту проблему эта проблема была решена.

Обратите внимание, что sourceRoot для основного проекта по-прежнему должен быть «src», вам нужно только изменить его на пустую строку в проекте e2e.

Спасибо за Ваш ответ. Я просматривал много сообщений об этой ошибке, и люди продолжают говорить «удалить проект e2e» или «перейти в корень проекта». Я имею в виду, черт возьми, это никогда не было приемлемым решением проблемы для меня. Так что твой ответ мне помог. Я поменял позицию проекта e2e и моего основного проекта, и он работает как шарм.

Tallerlei 03.04.2019 12:08

Другие вопросы по теме