Angular 2: не найдены метаданные NgModule
Я новичок в Angular 2 и пытаюсь следовать вместе с учебным видео, которое я нашел. Несмотря на следующие шаги, Angular просто не будет работать; Я получаю следующую ошибку:
compiler.umd.js:13854 Uncaught Error: No NgModule metadata found for 'App'.
и компонент не загружается вообще.
Вот мои файлы:
package.json:
{
"name": "retain",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "webpack --config webpack.spec.ts --progress --color && karma start",
"start": "webpack-dev-server --inline --colors --progress --display-error-details --display-cached --port 3000 --content-base src"
},
"author": "",
"license": "ISC",
"dependencies": {
"@angular/common": "2.0.0",
"@angular/compiler": "2.0.0",
"@angular/core": "2.0.0",
"@angular/forms": "2.0.0",
"@angular/http": "2.0.0",
"@angular/platform-browser": "2.0.0",
"@angular/platform-browser-dynamic": "2.0.0",
"@angular/router": "3.0.0",
"core-js": "2.4.1",
"lodash": "4.16.1",
"rxjs": "5.0.0-beta.12",
"zone.js": "0.6.25"
},
"devDependencies": {
"@types/core-js": "0.9.33",
"@types/lodash": "4.14.35",
"@types/node": "6.0.39",
"awesome-typescript-loader": "2.2.4",
"css-loader": "0.23.1",
"jasmine-core": "2.4.1",
"karma": "1.1.1",
"karma-chrome-launcher": "1.0.1",
"karma-jasmine": "1.0.2",
"karma-mocha-reporter": "2.0.4",
"raw-loader": "0.5.1",
"to-string-loader": "1.1.4",
"ts-helpers": "1.1.1",
"typescript": "2.0.2",
"webpack": "1.13.1",
"webpack-dev-server": "1.14.1"
}
}
index.html
<!DOCTYPE html>
<html>
<head>
<meta charset=UTF-8>
<title>Retain</title>
<link rel="icon" href="data:;base64,iVBORw0KGgo=">
<meta name="viewport" content="width=device-width, initial-scale=1">
<link href='https://cdnjs.cloudflare.com/ajax/libs/normalize/4.1.1/normalize.min.css' rel='stylesheet' type='text/css'>
<link rel="stylesheet" href="#" onclick="location.href='https://cdn.jsdelivr.net/flexboxgrid/6.3.0/flexboxgrid.min.css'; return false;" type="text/css">
<link href="#" onclick="location.href='https://fonts.googleapis.com/icon?family=Material+Icons'; return false;"
rel="stylesheet">
<link href="global.css" rel="stylesheet">
<base href="/">
</head>
<body>
<app>
... before angular loads.
</app>
<script src="polyfills.bundle.js"></script>
<script src="vendor.bundle.js"></script>
<script src="main.bundle.js"></script>
</body>
</html>
main.ts:
import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
import { AppModule } from './app/app.module';
import { App } from './app/app';
const platform = platformBrowserDynamic();
platform.bootstrapModule(App);
platformBrowserDynamic().bootstrapModule(AppModule);
app.ts:
import { Component } from '@angular/core';
import { NgModule } from '@angular/core';
@Component({
selector: 'app',
template: `
<div>
<h3>
Yo, world!
</h3>
</div>
`
})
export class App {}
app.module.ts:
import { NgModule } from '@angular/core';
import { BrowserModule } from '@angular/platform-browser';
import { App } from './app';
@NgModule({
imports: [BrowserModule],
declarations: [App],
bootstrap: [App]
})
export class AppModule{};
Спасибо за ваше время.
Ответы
Ответ 1
Проблема заключается в вашем файле main.ts
.
const platform = platformBrowserDynamic();
platform.bootstrapModule(App);
Вы пытаетесь загрузить App
, который не является реальным модулем.
Удалите эти две строки и замените их следующей строкой:
platformBrowserDynamic().bootstrapModule(AppModule);
и он исправит вашу ошибку.
Ответ 2
У меня была эта ошибка, хотя у меня было все, что было предложено выше. Простое редактирование в файле app.module.ts
(например, удаление скобки и его возврат) выполнило трюк.
Ответ 3
Попробуйте удалить node_modules rm -rf node_modules
и package-lock.json rm -rf package-lock.json
, после этого запустите npm install
.
Ответ 4
После перехода на Angular 6 я столкнулся с "ERROR in No NgModule metadata found for 'AppModule'."
с пакетом angular-bootstrap-md, для которого требуется tsconfig.json "включить" следующим образом:
"include": ["node_modules/angular-bootstrap-md/**/*.ts", "src/**/*.ts"],
После нескольких дней устранения неполадок и вытягивания волос решение состояло в том, чтобы упорядочить список, чтобы сначала был расположен app.module.ts, в разделе "src/**/*. Ts". Угловая ошибка, может быть?
"include": ["src/**/*.ts","node_modules/angular-bootstrap-md/**/*.ts" ],
Я искренне надеюсь, что это поможет кому-то, поскольку я пробовал все в этой публикации и ничего не помогал. После этого изменения все компилируется и работает красиво, как и ожидалось.
Ответ 5
Проблема исправлена только при переустановке angular/cli вручную. Выполните следующие шаги. (запустите всю команду под Angular Project DIR)
1) Удалите веб-пакет, используя следующую команду.
npm remove webpack
2) Установите cli, используя следующую команду.
npm install --save-dev @angular/[email protected]
После успешного тестирования приложения оно будет работать :)
если нет, то выполните следующие шаги.
1) Удалить папку node_module.
2) Очистите кеш, используя следующую команду.
npm cache clean --force
3) Установите пакеты узлов с помощью следующей команды.
npm install
4) Установите angular @cli с помощью следующей команды.
npm install --save-dev @angular/[email protected]
Примечание: если не удалось, попробуйте еще раз :)
5) отпраздновать :)
Ответ 6
Есть больше причин для получения этой ошибки. Это означает, что ваше приложение не удалось построить, как ожидалось.
Проверьте следующее.
- Проверьте, не изменилась ли версия node_modules, это
основная причина.
- Если вы переходите из какого-либо другого инструмента сборки в webpack, например
Systemjs to Webpack, если некоторые из ваших зависимостей не являются модульными в
вы можете получить эту ошибку, проверьте это тоже.
- Проверить устаревшие функции фреймворка, Ex: "HTTP_PROVIDERS"
в angular 2 и удалите их.
- Если вы выполняете обновление, убедитесь, что вы выполняете текущий
синтаксис Framework, для Ex: синтаксис routing был изменен в
Angular2..
- Проверьте процесс Bootstraping и убедитесь, что вы загружаете
правильный модуль.
Ответ 7
Поздний ответ, но это может помочь кому-то. Я получил ту же ошибку, опробовал все вышеупомянутые предложения, ударил головой о стену, но ничего не получилось.
При тщательном наблюдении я заметил следующее в app.module.ts:
imports: [
BrowserModule,
BrowserAnimationsModule,
FormsModule,
HttpClientModule,, // Redundant comma
CoreModule
];
Итак, я немного ударил головой. Дополнительная запятая, очень невинно освещенная WebStorm, как мягкое предупреждение, вызвала хаос, вставив пустой массив в массив. Наблюдение за elision trap;)
Ответ 8
В вашем main.ts
вы загружаете как AppModule, так и ваше приложение. Это должен быть просто AppModule, который затем загружает приложение.
Если вы сравните свой файл main.ts с документами, вы увидите разницу - просто удалите все ссылки на приложение из main.ts
Ответ 9
С Angular 5, я решил аналогичную проблему, урезав до @angular/cli
1.6.1 из 1.5.5:
"devDependencies": {
"@angular/cli": "1.6.1"
}
Во время ng serve
я получил ошибку:
ERROR in Error: No NgModule metadata found for 'AppModule'.
at NgModuleResolver.resolve (/path/to/project/app/node_modules/@angular/compiler/bundles/compiler.umd.js:20247:23)
Ответ 10
У меня была такая же проблема, и я не смог ее решить, прочитав все вышеперечисленные ответы. Затем я заметил, что дополнительная запятая в объявлениях создавала проблему. Удалено, проблема решена.
@NgModule({
imports: [
PagesRoutingModule,
ThemeModule,
DashboardModule,
],
declarations: [
...PAGES_COMPONENTS,
**,**
],
})
Ответ 11
Надеюсь, это поможет. В моем случае я работаю с модулем ERROR in No NgModule metadata found for 'MyModule'.
загрузки и обнаружил, что эта ошибка привела к ERROR in No NgModule metadata found for 'MyModule'.
in app-routing.module.ts
{ path: 'mc3', loadChildren: 'app/module/my/my.module#MxModule' },
Если я запускаю ng serve --aot
chrome dev tool может сказать мне Error: Cannot find 'Mc4Module' in 'app/module/mc3/mc3.module'
Ответ 12
У меня была эта проблема, когда я клонировал из репозитория git, и я решил, когда я создал новый проект и снова вставил папку src из старого проекта.
Папка src является единственной папкой, необходимой при развертывании вашего приложения angular, но вы должны перенастроить среду dev, используя это решение.
Ответ 13
Наконец я нашел решение.
- Удалите webpack, используя следующую команду.
npm remove webpack
- Установите cli, используя следующую команду.
npm install --save-dev @angular/[email protected]
после успешного тестирования приложение будет работать :)
Если нет, выполните следующие шаги:
- Удалите папку node_module.
- Очистите кеш с помощью следующей команды.
npm cache clean --force
- Установите пакеты узлов, используя следующую команду.
npm install
- Установите угловую @cli, используя следующую команду.
npm install --save-dev @angular/[email protected]
Примечание. Если не удалось, повторите шаг 4. Это будет работать.
Ответ 14
вам нужно включить директиву ngModel. Это делается путем добавления FormsModule к массиву import [] в AppModule.
Затем вам необходимо добавить импорт из @angular/forms в файл app.module.ts: import {FormsModule} из '@angular/forms';
Ответ 15
Мы сталкивались с этой проблемой в Angular Cli 1.7.4. Первоначально у нас есть
Cannot read property 'config' of null
TypeError: Cannot read property 'config' of null
И исправление этого приводит к вышеупомянутой проблеме.
Мы удалили package-lock.json
npm remove webpack
npm cache clean --force
Вы также можете удалить папку node_modules. А затем очистите кеш. переустановить угловой кли:
npm install @angular/[email protected]
И затем вы можете снова установить npm, чтобы убедиться, что все установлено.
Затем запустите
npm ls --depth 0
Чтобы убедиться, что все ваши узловые_модули синхронизированы друг с другом. Если есть какая-либо несоответствие зависимости, это возможность для нас выяснить.
Наконец запустите npm start/ng. он должен исправить все.
Это код чит-кода, за которым мы последуем, если у нас возникнут проблемы с cli, прежде чем мы углубимся. 95% случаев он исправляет все проблемы.
Надеюсь, это поможет.
Ответ 16
В моем случае я пытался обновить свой проект с угловым 6, используя ng update
после чего весь юниверс рушится.
Я пытался обновить свой проект, используя следующие команды:
- ng update @angular/cli
- ng update @angular/core
- ng update @угловой/материал
И затем я нашел проблему с пакетом rxjs, и я запускаю также эту команду. - npm install --save rxjs
И затем я получаю ошибку
Метаданные NgModule не найдены
Я решаю это, удалив папку node_modules в корне проекта, а затем запустим:
То есть все работает хорошо.
Ответ 17
Я обнаружил, что причиной этой проблемы в моем случае было то, что я объединил мое приложение Angular с приложением node.js в том же дереве исходных tsconfig.json
и в корне tsconfig.json
меня был:
"files": [ "./node_modules/@types/node/index.d.ts" ]
Я изменил это на
"compilerOptions": { "types": ["node"] }
А затем, чтобы предотвратить использование типов узлов в вашем угловом приложении, добавьте это в tsconfig.app.json
:
"compilerOptions": { "types": [] }
Ответ 18
У меня была та же проблема, но ни одно из этих решений не помогло мне. После дальнейшего расследования я обнаружил, что нежелательный импорт был в одном из моих компонентов.
Я использую функцию setTimeout
в app.component, но по любой причине Visual Studio добавил import { setTimeout } from 'timer';
там, где она не была нужна. Удаление этой строки устранило проблему.
Поэтому не забудьте проверить свой импорт, прежде чем идти дальше. Надеюсь, это может кому-то помочь.
Ответ 19
Я бы порекомендовал повторно запустить приложение. Редактор большинства случаев не сможет обнаружить изменения в загруженном модуле.
Ответ 20
Я дам вам несколько советов. Измените все, как указано ниже
1)<script src="polyfills.bundle.js"></script>(index.html) //<<<===not sure as Angular2.0 final version doesn't require this.
2)platform.bootstrapModule(App); (main.ts)
3)import { NgModule } from '@angular/core'; (app.ts)
Ответ 21
Использование ngcWebpack Plugin Я получил эту ошибку, если не укажу mainPath или entryModule.