2

私はAOTコンパイラが初めてです。

このオプションを使用して、すべてのファイルを「コンパイル済み」ディレクトリにコンパイルします。

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

しかし、「ngc」を実行すると、新しく作成された .ngfactory ファイルもコンパイルしようとし、入力エラーがスローされます。

「コンパイル済み」ディレクトリを削除してコードを再コンパイルしようとしましたが、再び起こりました。

また、tsconfig-aot.json ファイルに「exclude」キーを追加して (typescript コンパイラにあるように)、「コンパイル済み」ディレクトリを追加しようとしましたが、役に立ちませんでした。

何か案は?

==== 編集 ====

役立つ情報がいくつかあります。「genDir」をアプリケーション ディレクトリ以外のディレクトリに設定しようとしたところ、コンパイラがモジュール「app.module.ngfactory」を見つけられないというエラーが表示されました。

私の理解では、これは main.ts を次から変更したため、「.ngfactory」ファイルをコンパイルしようとすることを意味します。

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

4

1 に答える 1

1

それは私の悪いことでした。

コンパイラは ngfactory ファイルにエラーを表示しますが、コンパイルしたわけではありません。

エラーは元のコンポーネントの ts ファイルに関連しています。

ts ファイルのエラーを修正する必要があり、問題は解決しました。

アプリケーションが JIT で動作したとしても、AOT コンパイルは別のものであり、より厳密であり、処理する必要があり、JIT では問題にならないエラーが表示される可能性があることを理解するのは困難でした。

于 2016-11-03T08:27:34.070 に答える