Angular CLI - ошибка AOT во время сборки ng

Я создал приложение с использованием Angular CLI, и оно отлично работает с JIT-компиляцией. Я чувствовал, что мне нужно сделать свое приложение намного быстрее, поэтому я планировал преобразовать приложение из JIT в AOT.

Я выполнил инструкции, упомянутые angular.io

https://angular.io/guide/aot-compiler

Эта документация.

Я успешно преобразовал шаги, которые помогают нам преобразовать все файлы в ngFactory, завершил процесс объединения без ошибок.

Я получаю сообщение об ошибке при выполнении ng build --aot

Сообщение об ошибке выглядит следующим образом

Пытался найти код начальной загрузки, но не смог. Укажите либо статически анализируемый код начальной загрузки, либо передайте entryModule параметрам плагинов. Ошибка: попытался найти код начальной загрузки, но не смог. Укажите либо статически анализируемый код начальной загрузки, либо передайте entryModule параметрам плагинов. по адресу Object.resolveEntryModuleFromMain (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@ngtools/webpack/src/entry_resolver.js:128:11) по адресу AotPlugin._setupOptions (/ Users @ wakgjects_ / Webstorm / wakdev / Web-узлы / wakgDev / Web-объекты / Web-модули) webpack / src / plugin.js: 143: 50) в новом плагине AotPlugin (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@ngtools/webpack/src/plugin.js:26:14) в _createAotPlugin (/ Users / wakdev WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/models/webpack-configs/typescript.js: 55: 12) в Object.exports.getAotConfig (/ Users / wakdev / WebstormProjects / wak_ang2_angcli / node_modules / @ angular / webpack-configs / typescript.js: 88: 19) в NgCliWebpackConfig.buildConfig (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/models/webpack-config.js:26:37) в Class.run ( /Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/tasks/build.js:27:92) в Class.run (/ Users / wakdev / Websto rmProjects/wak_ang2_angcli/node_modules/@angular/cli/commands/build.js: 149: 26) в Class.Command.validateAndRun (/ Users / wakdev / WebstormProjects / wak_ang2_angcli / node_modules / @ angular / cli / lib / ember-cli models / command.js: 128: 15) в /Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/ember-cli/lib/cli/cli.js:92:22 в tryCatch (/ Users / wakdev / WebstormProjects / wak_ang2_angcli / node_modules / rsvp / dist / rsvp.js: 539: 12) в invokeCallback (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/rsvp/dist/rsvp.js) в:554 / WebstormProjects / wak_ang2_angcli / node_modules / rsvp / dist / rsvp.js: 629: 16 при сбросе (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/rsvp/dist/rsvp.js:2414:5) на _ next_tick.js: 67: 7) в process._tickCallback (internal / process / next_tick.js: 98: 9)

вот мой main.ts

import { platformBrowser }    from '@angular/platform-browser';
import {AppModuleNgFactory} from '../aot/src/app/app.module.ngfactory';

console.log('Running AOT compiled');
//platformServer().bootstrapModuleFactory(AppModuleNgFactory);
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);

мой tsconfig-aot.json

{
  "compilerOptions": {
    "target": "es5",
    "module": "es2015",
    "moduleResolution": "node",
    "sourceMap": true,
    "emitDecoratorMetadata": true,
    "experimentalDecorators": true,
    "lib": ["es2015", "dom"],
    "noImplicitAny": false,
    "suppressImplicitAnyIndexErrors": true,
    "typeRoots": [
      "./node_modules/@types/"
    ]
  },

  "files": [
    "src/app/app.module.ts",
    "src/main.ts",
  ],

  "angularCompilerOptions": {
    "genDir": "aot",
    "skipMetadataEmit" : true
  }
}

Есть ли у кого-нибудь такая же проблема


person skid    schedule 20.06.2017    source источник
comment
Если вы используете angular-cli, следуйте его собственной документации. Ваша структура папок неверна. Ваш main.ts должен импортировать модуль, который находится в одной папке с ним.   -  person eko    schedule 20.06.2017
comment
Эти инструкции предназначены для ручной реализации AOT для проектов, не использующих Angular CLI.   -  person Rob Zuber    schedule 20.06.2017


Ответы (1)


Как упоминалось в комментариях, если вы используете cli, то запуск ng build --prod должен сделать за вас сотрясение здания, aot и дерева. Если вы хотите сделать это более ручным маршрутом, как вы это делаете выше, вам нужно добавить еще одну строку в свой angularCompileOptions, чтобы они выглядели так:

  "angularCompilerOptions": {
    "genDir": "aot",
    "entryModule": "app/app.module#AppModule",
    "skipMetadataEmit" : true
  }

Поскольку вы не показываете свой фактический модуль, вам, возможно, придется обновить путь и имя модуля, но это свойство, скорее всего, именно то, что вам не хватает.

person peinearydevelopment    schedule 20.06.2017
comment
Команда ng build --prod работает нормально без каких-либо проблем, но когда я пытаюсь использовать ручную настройку angularCompilerOptions: {genDir: aot, entryModule: app / app.module # AppModule, skipMetadataEmit: true} Это не работает - person skid; 22.06.2017
comment
Это действительно зависит от вашего проекта. Возможно, путь, который я опубликовал, отключен или указан. Глядя на оставшуюся часть отправленного вами файла, возможно, это должен быть "src/app/app.module#AppModule". - person peinearydevelopment; 22.06.2017