Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Angular 2 : No NgModule metadata found

I'm brand new to Angular 2 and attempting to follow along with a video tutorial I found. Despite following all of the steps, Angular just won't work; I get the following error:

compiler.umd.js:13854 Uncaught Error: No NgModule metadata found for 'App'. 

and the component doesn't load at all.

Here are my files:

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="https://cdn.jsdelivr.net/flexboxgrid/6.3.0/flexboxgrid.min.css" type="text/css">     <link href="https://fonts.googleapis.com/icon?family=Material+Icons"       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{};  

Thanks for your time.

like image 318
B B Avatar asked Sep 25 '16 09:09

B B


2 Answers

I had this error even though I had everything that the answers above suggested in place. A simple edit in the app.module.ts file ( like delete a bracket and put it back) did the trick.

like image 123
Alf Moh Avatar answered Nov 10 '22 01:11

Alf Moh


The problem is in your main.ts file.

const platform = platformBrowserDynamic(); platform.bootstrapModule(App); 

You are trying to bootstrap App, which is not a real module. Delete these two lines and replace with the following line:

platformBrowserDynamic().bootstrapModule(AppModule); 

and it will fix your error.

like image 45
Alexander Ciesielski Avatar answered Nov 09 '22 23:11

Alexander Ciesielski