There was a project that was written by him initially under the Angulyar 2. for the prodakshin, they used a set of crutches that made the aot variant (this case was going for 2 minutes at worst). But there were a lot of problems when adding other packages, in connection with which, Angulyar4 came out, and then 5 - there was a question about updating and moving away from the crutches to the standard from the box, which gives Angulyar.

But everything turned out to be less joyful. The jit (ng build) build option wound up with almost no tambourine.

There is a problem with the aot option. It was decided to update the packages - after which it gathered, as it turned out that something was wrong there - it did not work.

The debugger writes: No NgModule metadata found for 'AppModule'. Something is missing somewhere.

.angular-cli.json

{ "$schema": "./node_modules/@angular/cli/lib/config/schema.json", "project": { "name": "mc.4.0", "ejected": false }, "apps": [ { "root": "src", "outDir": "dist", "assets": [ "assets", "favicon.ico" ], "index": "index.html", "main": "app/main.ts", "polyfills": "polyfills.ts", "test": "test.ts", "tsconfig": "tsconfig.app.json", "testTsconfig": "tsconfig.spec.json", "prefix": "app", "styles": [], "scripts": [], "environmentSource": "environments/environment.ts", "environments": { "dev": "environments/environment.ts", "prod": "environments/environment.prod.ts" } } ], "e2e": { "protractor": { "config": "./protractor.conf.js" } }, "lint": [ { "project": "src/tsconfig.app.json", "exclude": "**/node_modules/**" }, { "project": "src/tsconfig.spec.json", "exclude": "**/node_modules/**" }, { "project": "e2e/tsconfig.e2e.json", "exclude": "**/node_modules/**" } ], "test": { "karma": { "config": "./karma.conf.js" } }, "defaults": { "styleExt": "css", "component": { } } } 

tsconfig.app.json

 { "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/app", "baseUrl": "./", "module": "es2015", "types": [] }, "exclude": [ "test.ts", "**/*.spec.ts" ] } 

tsconfig.json

 { "compileOnSave": false, "compilerOptions": { "outDir": "./dist/out-tsc", "sourceMap": true, "declaration": false, "moduleResolution": "node", "emitDecoratorMetadata": true, "experimentalDecorators": true, "target": "es5", "typeRoots": [ "node_modules/@types" ], "lib": [ "es2017", "dom" ] }, "angularCompilerOptions": { "genDir": "compiled", "strictMetadataEmit" : true, "skipMetadataEmit" : false } } 

tsconfig.spec.json

 { "extends": "../tsconfig.json", "compilerOptions": { "outDir": "../out-tsc/spec", "baseUrl": "./", "module": "commonjs", "target": "es5", "types": [ "jasmine", "node" ] }, "files": [ "test.ts" ], "include": [ "**/*.spec.ts", "**/*.d.ts" ] } 

index.html

 <!doctype html> <html> <head> <base href="/"> <title></title> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1"> <meta name="viewport" content="width=device-width, initial-scale=1"> <link rel="icon" type="image/x-icon" href="favicon.ico"> </head> <body > <my-app style="height:100%;"></my-app> </body> </html> 

app.component.ts

 import { Component } from '@angular/core'; @Component({ selector: 'my-app', template: `<router-outlet></router-outlet>` }) export class AppComponent {} 

app.module.ts

 import { NgModule } from '@angular/core'; import { BrowserModule } from '@angular/platform-browser'; import { FormsModule } from '@angular/forms'; import { LoginComponent } from './components/comp.login'; import { ClientComponent } from './components/comp.client'; import { MainComponent } from './components/comp.main'; import { ProjectComponent } from './components/comp.project'; import { AppComponent } from './app.component'; import { DialogComponent } from './components/comp.addclient'; import {SettingsComponent} from './components/comp.settings'; import {CalendarComponent } from './components/comp.calendar'; import {AnalyticsComponent } from './components/comp.analytics'; import {BrowserAnimationsModule} from '@angular/platform-browser/animations'; import { RouterModule, Routes } from '@angular/router'; import { HttpClientModule } from '@angular/common/http'; import {ColorPickerModule} from 'ngx-color-picker'; import {MyDatePickerModule } from '../../node_modules/mydatepicker/dist/my-date-picker.module'; import {ServerString} from "./set/serverstring"; import { CookieModule } from 'ngx-cookie'; import { NguiAutoCompleteModule } from '@ngui/auto-complete'; import {NgxChartsModule} from '@swimlane/ngx-charts'; import {SoundService} from "./set/SoundService"; const appRoutes: Routes = [ { path: 'login/:pageToGo', component: LoginComponent }, { path: 'login', redirectTo: 'login/main', pathMatch: 'full'}, { path: 'main', component: MainComponent }, { path: 'client/:id', component: ClientComponent }, { path: 'project/:id', component: ProjectComponent }, { path: 'settings', component: SettingsComponent }, { path: 'calendar', component: CalendarComponent }, { path: 'analytics', component: AnalyticsComponent }, { path: '**', redirectTo: 'main', pathMatch: 'full'} ]; @NgModule({ imports: [ MyDatePickerModule, BrowserModule, FormsModule, HttpClientModule, RouterModule.forRoot(appRoutes),CookieModule.forRoot(), ColorPickerModule, BrowserAnimationsModule, NguiAutoCompleteModule , NgxChartsModule ], declarations: [ AppComponent, LoginComponent, MainComponent, ClientComponent, ProjectComponent, DialogComponent, SettingsComponent, CalendarComponent , AnalyticsComponent], bootstrap: [ AppComponent ], providers: [ServerString, SoundService] }) export class AppModule { } 

main.ts

 import { platformBrowserDynamic } from '@angular/platform-browser-dynamic'; import { AppModule } from './app.module'; import { enableProdMode } from '@angular/core'; import { environment } from '../environments/environment'; if (environment.production) { enableProdMode(); } enableProdMode(); console.log('Running ng' + '5^ compiled'); const platform = platformBrowserDynamic(); platform.bootstrapModule(AppModule); 

polifills.ts

 import 'core-js/es7/reflect'; import 'web-animations-js'; import 'zone.js/dist/zone'; 

    1 answer 1

    The decision as it turned out is

    1. change in main.ts

     platformBrowserDynamic().bootstrapModule(AppModule) // для простоты дебага .catch(err=>console.error(err)) ; вместо const platform = platformBrowserDynamic(); platform.bootstrapModule(AppModule); 

    The initial version apparently seemed to be non-dynamic to the compiler ... something has changed from the 4.5 version ... the build result in comparison with ang 2 is very beautiful and small.