我的理解是,在ng构建过程中,默认使用AOT编译,并且只有在开发中(ng服务)才需要设置--aot标志。
但是现在,我面前有一个项目,它在多个位置使用来自@角/编译器的类和方法。尽管如此,“ng build”与生产的结果:在环境中是正确的,没有任何失败,并且似乎知道编译器。但是,如果我使用“ng serve -aot”,则会收到预期的“未加载错误:未加载运行时编译器”。
那是怎么回事?默认情况下是否使用AOT。
顺便说一句:该项目使用的是角版本^4.0.0。
编辑
@Melou和PierreDuc告诉我我错了:ng build --prod和ng build -e prod不一样。环境中的生产设置不会更改编译过程。--prod还设置--target=production,这将触发AOT编译。
发布于 2017-06-13 10:17:15
默认情况下,不使用 command来使用AOT。仅当您添加--prod参数时。这将将--target设置为生产,启用AOT并禁用源代码映射:
# these are equivalent
ng build --target=production --environment=prod
ng build --prod --env=prod
ng build --prod发布于 2017-06-13 10:12:16
如果使用角4.0.0,则必须处于角-cli> 1.0.0,默认情况下在prod模式下使用aot。
角-cli取代部分代码使其工作。
例如,在您的main.ts中,您使用bootstrapModule,它被bootstrapModuleFactory取代。
如果您检查生成的dist/main.xxxx.bundle.js(例如,使用grep grep bootstrapModuleFactory main.xxxxx.bundle.js之类的工具),您将看到对bootstrapModuleFactory的调用。
https://stackoverflow.com/questions/44517805
复制相似问题