我是AOT编译器的新手。
我使用以下选项将所有文件编译到'编译'目录:
"angularCompilerOptions": {
"genDir": "compiled",
"skipMetadataEmit" : true
}
但是当我运行'ngc'时,它会尝试编译新创建的.ngfactory文件,并在它们上面输入错误。
我试图删除'编译'目录并重新编译代码,但它又发生了。
我还尝试在tsconfig-aot.json文件中添加“exclude”键(就像我在typescript编译器中一样)并添加“编译”目录,但这没有帮助。
有什么想法吗?
====编辑====
可能有帮助的更多信息,我试图将'genDir'设置为应用程序目录之外的目录,然后我收到错误,说编译器找不到模块'app.module.ngfactory ”。
根据我的理解,这意味着它会尝试编译'.ngfactory'文件,因为我更改了main.ts:
import { AppModule } from "./components/app.module";
platformBrowserDynamic().bootstrapModule(AppModule);
为:
import { AppModuleNgFactory } from "../compiled/client/components/app.module.ngfactory";
platformBrowser().bootstrapModuleFactory(AppModuleNgFactory);
这可能会导致编译器编译app.module.ngfactory,并从那里移动到'app.module.ngfactory'中的其他导入并尝试编译所有'.ngfactory'文件。
有意义吗?我更改了'main.ts'文件,就像谷歌在https://angular.io/docs/ts/latest/cookbook/aot-compiler.html
显示的那样答案 0 :(得分:1)
这是我的坏事。
编译器在ngfactory文件上显示错误,但并不意味着编译它们。
错误与原始组件的ts文件有关。
我必须修复ts文件中的错误,它解决了问题。
我很难理解即使应用程序在JIT中工作,AOT编译的东西也不同,而且更严格,可能会显示我需要处理的一些错误,在JIT中无关紧要。