2016-09-05 7 views
5

Angular2 RC6を使用してAngular2ライブラリを作成しています。Angular2、フィーチャモジュールをプレコンパイルする際のメタデータエラー

このライブラリに単一のモジュールが含まれています。

import { Component, OnInit, NgModule } from '@angular/core'; 
import { CommonModule } from '@angular/common'; 

@Component({ 
    selector: 'yeva', 
    template: '<div></div>' 
}) 
export class YevaComponent { 
    constructor() { } 
} 


@NgModule({ 
    imports: [CommonModule], 
    declarations: [YevaComponent], 
    providers: [], 
    exports: [YevaComponent] 
}) 
export class YevaModule { 

} 

私は既存のAngular2アプリケーションでtypescriptファイルにこのコードを貼り付け、直接このモジュールを使用しようとコピーした場合、それは完璧に動作...

しかし私の目標は、外部のnpmライブラリを構築することです。

私は、スタンドアロンのプロジェクトでこれと同じコードを移動した場合:

https://github.com/ClementVidal/starter.yeva

(このプロジェクトは、それがために、活字体を使用してコンパイルさAngular2ライブラリとして使用されるように構成されています私のクライアントアプリケーションによって消費される)

I取得するには、次のエラー:。

予期しない値 'YevaModule' importeモジュールによってdがここにAppModule」

は、私は両方のケースで私のモジュールをインポートする方法です:

@NgModule({ 
    imports: [BrowserModule,YevaModule], 
    declarations: [AppComponent], 
    providers: [ 
    FOUNDATION_PROVIDERS 
    ], 
    bootstrap: [AppComponent] 
}) 
export class AppModule { 

} 

このエラーは角コンパイラから来る:

var importedMeta = _this.getNgModuleMetadata(importedModuleType, false); 
if (importedMeta === null) { 
    throw new Error("Unexpected " + _this._getTypeDescriptor(importedType) + " '" + stringify(importedType) + "' imported by the module '" + stringify(moduleType) + "'"); 
} 

それは私のモジュールと思われます、プリコンパイル済みモジュールとしてインポートした場合、メタデータは含まれていません

ここ

は、このエラーを再現する方法です...私はコンパイルされたコードを見て、これを理解しようとしましたが、私は何も見つかりませんでした:

mkdir test-metadata 
cd test-metadata 
git clone [email protected]:ClementVidal/starter.yeva.git 
git clone [email protected]:ClementVidal/starter.themba.git 
cd starter.yeva 
npm install 
sudo npm link 
cd ../starter.themba 
git checkout module-metadata 
sudo npm link __TITLE__ 
npm install 
npm run server 

その後http://localhost:8080/

このタイプの問題は既に実験していますか?

答えて

0

npmリンクなしで試しましたか?多分それがここの問題です。私はそれとwebpackの闘いが分かっています...

本当にnpmからあなたのライブラリをインストールすることができます。私はあなたのコードに間違いがないので、チェックするだけでアルファ版をリリースしようとするべきです。

+0

として、私はそれを試していないことを提出します。私はそれをテストします!ありがとう – Clement

2

定義ファイルごとに1つ以上のメタデータファイルがライブラリ作成者によって提供されるようです。メタデータファイルは、Angular AOTコンパイラ(angular-cli)によって生成されます。ここで

がまっすぐな角度から、それへの参照です:

ここAOTコンパイラをサポートするために変更を適用するライブラリの作者の一例です:

私が別のライブラリへのサポートを追加するプロセスで同様だとPR

HTH

関連する問題