Angular 4 AOT 编译器
Angular 4 AOT Compiler
我想为我的应用程序设置 AOT 编译器
当我 运行 node_modules/.bin/ngc -p tsconfig-aot.json
它编译成功并且没有给出错误。
但是当我尝试 运行 ng serve
它给了我这个错误:
试图找到 bootstrap 代码,但找不到。指定静态可分析的 bootstrap 代码或将 entryModule 传递给插件选项。
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 (/path/node_modules/@ngtools/webpack/src/entry_resolver.js:128:11)
at AotPlugin._setupOptions (/path/node_modules/@ngtools/webpack/src/plugin.js:143:50)
at new AotPlugin (/path/node_modules/@ngtools/webpack/src/plugin.js:26:14)
at _createAotPlugin (/path/node_modules/@angular/cli/models/webpack-configs/typescript.js:55:12)
at Object.exports.getNonAotConfig (/path/node_modules/@angular/cli/models/webpack-configs/typescript.js:70:19)
at NgCliWebpackConfig.buildConfig (/path/node_modules/@angular/cli/models/webpack-config.js:27:37)
at Class.run (/path/node_modules/@angular/cli/tasks/serve.js:38:98)
at check_port_1.checkPort.then.port (/path/node_modules/@angular/cli/commands/serve.js:110:26)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
main.ts
import { platformBrowser } from '@angular/platform-browser';
import { AppModuleNgFactory } from '../aot/src/app/main/app.module.ngfactory';
console.log('Running AOT compiled');
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
node_modules/.bin/ngc -p tsconfig-aot.json
将所有文件编译到输出文件夹中。您可以使用任何 http 服务器访问该文件夹中的 运行 文件。
然而,在使用 angular-cli
进行开发时,通常不会这样做。 ng serve
使用自己的开发服务器,不关心 output
文件夹。如 official docs 中所述:
ng serve
builds the application and starts a web server.
... below are the additional
options.
-- aot
所以你需要使用--aot
选项:
ng serve --aot
而且您不需要修改 main.ts
文件。它应该有 boostrapModule
而不是 boostrapModuleFactory
方法。
我想为我的应用程序设置 AOT 编译器
当我 运行 node_modules/.bin/ngc -p tsconfig-aot.json
它编译成功并且没有给出错误。
但是当我尝试 运行 ng serve
它给了我这个错误:
试图找到 bootstrap 代码,但找不到。指定静态可分析的 bootstrap 代码或将 entryModule 传递给插件选项。
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 (/path/node_modules/@ngtools/webpack/src/entry_resolver.js:128:11)
at AotPlugin._setupOptions (/path/node_modules/@ngtools/webpack/src/plugin.js:143:50)
at new AotPlugin (/path/node_modules/@ngtools/webpack/src/plugin.js:26:14)
at _createAotPlugin (/path/node_modules/@angular/cli/models/webpack-configs/typescript.js:55:12)
at Object.exports.getNonAotConfig (/path/node_modules/@angular/cli/models/webpack-configs/typescript.js:70:19)
at NgCliWebpackConfig.buildConfig (/path/node_modules/@angular/cli/models/webpack-config.js:27:37)
at Class.run (/path/node_modules/@angular/cli/tasks/serve.js:38:98)
at check_port_1.checkPort.then.port (/path/node_modules/@angular/cli/commands/serve.js:110:26)
at <anonymous>
at process._tickCallback (internal/process/next_tick.js:188:7)
main.ts
import { platformBrowser } from '@angular/platform-browser';
import { AppModuleNgFactory } from '../aot/src/app/main/app.module.ngfactory';
console.log('Running AOT compiled');
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
node_modules/.bin/ngc -p tsconfig-aot.json
将所有文件编译到输出文件夹中。您可以使用任何 http 服务器访问该文件夹中的 运行 文件。
然而,在使用 angular-cli
进行开发时,通常不会这样做。 ng serve
使用自己的开发服务器,不关心 output
文件夹。如 official docs 中所述:
ng serve
builds the application and starts a web server.... below are the additional options.
-- aot
所以你需要使用--aot
选项:
ng serve --aot
而且您不需要修改 main.ts
文件。它应该有 boostrapModule
而不是 boostrapModuleFactory
方法。