2016-09-05 4 views
5

Ich schreibe eine Angular2-Bibliothek mit Angular2 RC6.Angular2, Metadatenfehler beim Vorkompilieren des Feature-Moduls

Diese Bibliothek enthält ein einzelnes Modul:

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 { 

} 

Wenn ich diesen Code kopieren und einfügen in einer Typoskript-Datei in einer vorhandenen Angular2 Anwendung, und versuchen, dieses Modul zu verwenden, um direkt, es funktioniert perfekt ...

Aber mein Ziel ist es, eine externe npm-Bibliothek zu erstellen.

Wenn ich mich bewege diesen exakt gleichen Code in einem eigenständigen Projekt:

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

(Dieses Projekt ist so konfiguriert, als Angular2 Bibliothek verwendet werden, wo es mit Typoskript, um kompiliert wird, um von meinem Client-Anwendung verbraucht werden)

ich erhalte die folgende Fehlermeldung:.

Unerwarteter Wert 'YevaModule' importe d durch das Modul 'AppModule'

Hier ist, wie ich mein Modul in beiden Fällen importieren:

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

} 

Dieser Fehler kommen aus dem Angular Compiler:

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

Es scheint, dass mein Modul , beim Importieren als vorkompiliertes Modul enthält keine Metadaten.

Ich habe versucht, dies durch einen Blick auf den kompilierten Code, um herauszufinden, aber ich habe nichts gefunden ...

Hier ist, wie diese Fehler zu reproduzieren:

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 

Dann stöbern zu http://localhost:8080/

Experimentiert schon jemand von Ihnen diese Art von Problem?

Antwort

0

Haben Sie ohne den npm Link versucht? Vielleicht ist das das Problem hier; Ich weiß, dass Webpack damit kämpft ...

Wirklich die Installation Ihrer Bibliothek von Npm könnte funktionieren. Sie sollten versuchen, eine Alpha-Version zu veröffentlichen, nur um zu überprüfen, weil ich in Ihrem Code nichts falsch sehe.

+0

ich nicht, dass versuchen. Ich werde das testen! Vielen Dank – Clement

2

Es scheint, als ob eine oder mehrere Metadatendateien vom Bibliotheksautor zur Verfügung gestellt werden sollten, eine für jede Definitionsdatei. Metadaten-Dateien werden von Angular AOT-Compiler erzeugt (angular-cli).

Hier sind Hinweise auf, dass gerade aus Winkel:

Hier ein Beispiel für eine Bibliothek des Autors Änderungen, um die Anwendung AOT-Compiler zu unterstützen:

Ich bin auch in der Prozessunterstützung in einer anderen Bibliothek des Hinzufügens und trage vor, als PR-

HTH

Verwandte Themen