AOT编译器编译ngfactory文件

AOT compiler compiles ngfactory files

我是 AOT 编译器的新手。

我使用此选项将所有文件编译到 'compiled' 目录:

"angularCompilerOptions": {
    "genDir": "compiled",
    "skipMetadataEmit" : true
}

但是当我 运行 'ngc' 它也尝试编译新创建的 .ngfactory 文件并抛出输入错误。

我试图删除 'compiled' 目录并重新编译代码,但它又发生了。

我还尝试在 tsconfig-aot.json 文件中添加 "exclude" 键(就像我在打字稿编译器中所做的那样)并添加 'compiled' 目录,但这没有帮助。

有什么想法吗?

====编辑====

一些可能有用的信息,我尝试将 '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' 文件,完全按照 google 显示在:https://angular.io/docs/ts/latest/cookbook/aot-compiler.html

是我的错。

编译器在 ngfactory 文件上显示错误,但这并不意味着它编译了它们。

错误与原组件的ts文件有关。

我必须修复 ts 文件中的错误,它解决了问题。

我很难理解,尽管应用程序在 JIT 中运行,但 AOT 编译的东西不同并且更严格,并且可能会显示一些我需要处理的错误,而在 JIT 中无关紧要。