2

我是 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

4

1 回答 1

1

这是我的错。

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

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

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

我很难理解,即使应用程序在 JIT 中工作,AOT 编译的东西也不同,而且更严格,可能会显示一些我需要处理的错误,而在 JIT 中并不重要。

于 2016-11-03T08:27:34.070 回答