我是 AOT 编译器的新手。
我使用此选项将所有文件编译到“已编译”目录:
"angularCompilerOptions": {
"genDir": "compiled",
"skipMetadataEmit" : true
}
但是当我运行“ngc”时,它也会尝试编译新创建的 .ngfactory 文件并在它们上抛出输入错误。
我试图删除“已编译”目录并重新编译代码,但它又发生了。
我还尝试在 tsconfig-aot.json 文件中添加“排除”键(就像我在 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