2017-06-09 12 views
1

角度材料(または他のパッケージフォーマット4.0モジュール)をインポートすると、AOTコンパイルが失敗します。角度材料またはパッケージフォーマット4.0のAOTコンパイルが失敗する

import { NgModule, ModuleWithProviders } from '@angular/core'; 
 
import {MdButtonModule, MdCheckboxModule} from '@angular/material'; 
 

 
@NgModule({ 
 
    imports:  [ 
 
        MdButtonModule, 
 
        MdCheckboxModule 
 
       ], 
 
    exports:  [ 
 
        MdButtonModule, 
 
        MdCheckboxModule 
 
       ] 
 
}) 
 

 
export class NorSharedModule { 
 
    static forRoot(): ModuleWithProviders { 
 
    return { 
 
     ngModule: NorSharedModule 
 
    }; 
 
    } 
 
}

私はAOTでコンパイルすると角度の材質のために生成ngfactoryファイルは、循環的な輸入品を作成します。

index.ngfactory.ts

/** 
* @fileoverview This file is generated by the Angular template compiler. 
* Do not edit. 
* @suppress {suspiciousCode,uselessCode,missingProperties,missingOverride} 
*/ 
/* tslint:disable */ 

import * as i0 from '@angular/core'; 
import * as i1 from '@angular/material'; 
import * as i2 from '@angular/common'; 
import * as i3 from '@angular/platform-browser'; 
import * as i4 from './index.ngfactory'; 
import * as i5 from '@angular/forms'; 
import * as i6 from '@angular/http'; 
export const MdCoreModuleNgFactory:i0.NgModuleFactory<i1.MdCoreModule> = i0.ɵcmf(i1.MdCoreModule, 

もちろんこれは、ビルドプロセスの次のステップを壊します。ロールアップはバンドルできません。

[8:51:38] LOG ngc started compiling ngfactory 
[8:51:50] LOG ngc compiled /ngfactory 
[8:51:50] LOG Rollup started bundling ngfactory 
Error: A module cannot import itself 
ngfactory/node_modules/@angular/material/typings/index.ngfactory.js (5:0) 
3: import * as i2 from '@angular/common'; 
4: import * as i3 from '@angular/platform-browser'; 
5: import * as i4 from './index.ngfactory'; 
^
6: import * as i5 from '@angular/forms'; 
7: import * as i6 from '@angular/http'; 

これは4.2.0-rc.24.2.0に複製されます。

答えて

2

hereが修正されました。

@angular/compiler@angular/compiler-cli4.3.0-beta.0に更新できます。あなたは新しい問題を発見するでしょうしかし

...

(function (exports, require, module, __filename, __dirname) { import * as i0 from '@angular/core'; 
SyntaxError: Unexpected token import 

EDIT

あなたは、この第二の問題にhere

に従うことができます
0

これはおそらくPackage Format 4.0、tsickle、ngfactoriesのバグであり、私はAngularチームに提出しています。回避策があります。

ngcの実行後、各ライブラリのngfactoryファイルを見つけて、ファイルを複製し、拡張子.imports.jsで名前を変更し、元のngfactoryで新しいファイルをインポートします。これにより周期的なインポートが削除されます。