Angular CLI - ng 构建期间出现 AOT 错误

Angular CLI - AOT error during ng build

我使用 Angular CLI 创建了一个应用程序,它在 JIT 编译中运行良好。我觉得我需要使我的应用程序更快,所以我计划将应用程序从 JIT 转换为 AOT。

我遵循了 angular.io

提到的说明

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

此文档。

我成功转换了帮助我们将所有文件转换为 ngFactory 的步骤,没有错误地完成了汇总过程。

我在执行 ng build --aot

时遇到错误

报错信息如下

Tried to find bootstrap code, but could not. Specify either statically analyzable bootstrap code or pass in an entryModule to the plugins options. Error: Tried to find bootstrap code, but could not. Specify either statically analyzable bootstrap code or pass in an entryModule to the plugins options. at Object.resolveEntryModuleFromMain (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@ngtools/webpack/src/entry_resolver.js:128:11) at AotPlugin._setupOptions (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@ngtools/webpack/src/plugin.js:143:50) at new AotPlugin (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@ngtools/webpack/src/plugin.js:26:14) at _createAotPlugin (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/models/webpack-configs/typescript.js:55:12) at Object.exports.getAotConfig (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/models/webpack-configs/typescript.js:88:19) at NgCliWebpackConfig.buildConfig (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/models/webpack-config.js:26:37) at Class.run (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/tasks/build.js:27:92) at Class.run (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/commands/build.js:149:26) at Class.Command.validateAndRun (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/ember-cli/lib/models/command.js:128:15) at /Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/@angular/cli/ember-cli/lib/cli/cli.js:92:22 at tryCatch (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/rsvp/dist/rsvp.js:539:12) at invokeCallback (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/rsvp/dist/rsvp.js:554:13) at /Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/rsvp/dist/rsvp.js:629:16 at flush (/Users/wakdev/WebstormProjects/wak_ang2_angcli/node_modules/rsvp/dist/rsvp.js:2414:5) at _combinedTickCallback (internal/process/next_tick.js:67:7) at 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
  }
}

有没有人遇到同样的问题

如评论中所述,如果您使用的是 cli,那么 运行 ng build --prod 应该为您完成构建、aot 和 tree shaking。如果你想做更多的手动路线,就像你在上面做的那样,你需要在你的 angularCompileOptions 中添加另一行,这样它们看起来像这样:

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

由于您没有显示实际模块,您可能必须更新路径和模块名称,但 属性 很可能是您遗漏的内容。