При создании нового компонента с помощью 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
Какова структура папок вашего проекта? Где (внутри какой папки) вы запускаете ng g c my-component?
Да я неразумно запустил ngupdate. Правка - добавлена структура папок. ng g c запускается из папки my-app
Попробуйте ng g c my-component --module app.module (или --module ../module.app, или сколько угодно родительских уровней).





Я чувствую, что
ng generate component componentName --module=<MODULE-NAME>
ng generate component componentName --module=app.module
Я получаю, что указанный модуль не существует, ошибка ... модуль, конечно же, существует.
Может потребоваться относительный путь, например --module=../app.module.
Заявление вашей команды: ng g c my-component может вызвать проблему. пожалуйста, попробуйте с
ng g c mycomponent
Использование дефисов в именах компонентов, как это, является стандартной практикой? Я все равно попробовал на всякий случай, получил ту же ошибку.
У меня была такая же проблема в одном из моих проектов.
Проверьте здесь: 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 sampleComponentorng g c sampleComponent
В этом сценарии следует учитывать два основных аспекта:
- 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-importthat'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.)
Следуй этим шагам
cd ..Примечание: вы также можете использовать здесь сам ng g c sampleComponent, и это создает компонент внутри src / app.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 и моего основного проекта, и он работает как шарм.
вы обновили свое приложение до Angular 6 с помощью команды
ng update?