2016-11-03 4 views
8

Lazy読み込みモジュールで既に動作していたアプリケーションをAOTに変換しようとしています。私はAOTコードをコンパイルするために@ ngtools/webpackツールキットを使用していますが、Angular cantがLazy読み込みモジュールのコードを見つけられるというエラーが発生しています。このプロジェクトのモジュールは遅延ロードされた私のアプリのルート定義に言及価値LazyローディングのAngular2 AOT [Lazy Moduleへのパス] .ngfactory.ts

ERROR in ./src/ngfactory async 
Module not found: Error: Can't resolve '/Library/WebServer/Documents/envato-teams/src/ngfactory/src/app/components/container/projects.ngfactory.ts' in '/Library/WebServer/Documents/envato-teams/src/ngfactory' 
@ ./src/ngfactory async 
@ ./~/@angular/core/src/linker/system_js_ng_module_factory_loader.js 
@ ./src/ngfactory/src/app/app.module.ngfactory.ts 
@ ./src/main.aot.ts 
@ multi main 

のTSconfig:

... 
"angularCompilerOptions": { 
    "genDir": "./src/ngfactory", 
    "entryModule": "src/app/app.module#AppModule" 
} 
... 

のWebPACK

{ 
    path: 'projects', loadChildren: './components/container/projects#ProjectModule' 
}, 

これは私の設定はどのように見えるかです:

WebPACKので
new ngtools.AotPlugin({ 
    tsConfigPath: './tsconfig.aot.json', 
}), 

Main.aot.ts

/* 
* Providers provided by Angular 
*/ 
import { platformBrowser } from '@angular/platform-browser'; 
import { AppModuleNgFactory } from './ngfactory/src/app/app.module.ngfactory'; 

import { Servicesconfig } from './app/services/index'; 

platformBrowser().bootstrapModuleFactory(AppModuleNgFactory); 

私が行うことで、@ ngtools/WebPACKのでTSファイルをコンパイルしています:

// Support for .ts files. 
{ 
    test: /\.ts$/, 
    loaders: ['@ngtools/webpack'], 
    exclude: [/\.(spec|e2e)\.ts$/] 
}, 

あなたの助けをありがとう!

+0

これはまったく同じ問題です...これまでのところ、修正が見つかりませんでした... – user2363245

+1

私は角型ジッターシャネルの瞬間に得た答えは、AOTと怠惰な負荷がうまくいっていないということです。すぐに修正されるhttps://github.com/angular/angular-cli/commit/88131a08fd39eab5fc49dfce952207ee826bc8efまだマージされていませんが、すぐにリリースされ、@ ngtools/webpackで作業する必要があります –

答えて

8

私はAOTとLazyのロードモジュールで自分自身を苦労していました。

いずれかを選択することは、実際にビルドするオプションではありませんでした。

私は本当に一緒にそれらの機能を必要としましたが、私はそれらを得ることができず、あきらめなければなりませんでした。今日まで !

angular-cliは、2日前にリリースしました。1.0.0-beta.21は、AOTおよび遅延ロードをサポートしています。あなたの角度-CLIプロジェクトで

npm cache clean 
npm install --save-dev [email protected] 
ng init 

お楽しみください!

PS:ここですばらしい仕事をした角度のcliチームに大きな感謝...!

EDIT:
私はいくつかのベンチマークでした(^ _ ^私は物事開かれ、3台のモニターの多くを持っていると私のラップトップは、痛みがあるので、結果が良いスーパーではありません)

+-----------------------+-------------+--------------+-----------+-------------+ 
|      | Main bundle | Chunk 0 | Scripting | First paint | 
+-----------------------+-------------+--------------+-----------+-------------+ 
| ng serve    | 4.5 MB  | Not splitted | 6075 ms | 5500+ ms | 
| ng serve --prod  | 334 KB  | Not splitted | 5587 ms | 4750+ ms | 
| ng serve --aot  | 3.3 MB  | 326 KB  | 4011 ms | 4400+ ms | 
| ng serve --prod --aot | 243 KB  | 18.1 Kb  | 3860 ms | 4250+ ms | 
+-----------------------+-------------+--------------+-----------+-------------+ 

を。

は、ここではそれとは覚えることができるものです。
- --prod --aotビルドサイズは
ビルド--prodより27%小さい - --prod --aotビルドがたときに、スクリプトのビルド
--prodより31%高速であります - AOTはクール!
- おそらく、aotフラグのないバグがあります。私が何かを見逃していないと、私が期待していた遅延読み込みチャンクが見つからず、メインバンドルに遅延読み込みコードがあるとわかりました。私はGithubにissueを開いた。

+0

ありがとうございます。すべての思考が私のために働いて、怠惰なロードされたモジュールでさえ予想通りにロードされています。 – Manish

+0

以前のコメントで言及したように、https://www.npmjs.com/package/@ngtools/webpackパッケージを使用すると、AOTと遅延読み込みがうまく機能します。これは、質問を投稿した時点で修正されていました。 –

+0

角度Cookbook:[link](https://angular.io/docs/ts/latest/cookbook/aot-compiler.html#!#overview)に記載されている設定手順を実行する必要があるかどうかを教えてください。 ?それでもビルドする必要がありますか、モジュール工場をブートストラップしますか?別のtsconfigを使用していますか? ng build --prodがng build --prod --aotと同じサイズを生成する新しいcliプロジェクトのようです。イムは、cliと角度2.4.7のベータ.30を使用しています。すべての素晴らしい情報をありがとう。 – Ibanez0