2017-01-16 2 views
8

Ich habe diese NgModule:ERROR in ** ist kein NgModule

@NgModule({ 
    imports: [ 
     CommonModule 
    ], 
    exports: [ 
     SP21LoadingBar 
    ], 
    declarations: [SP21LoadingBar] 
}) 
export class SP21LoadingBarModule { } 

Die Cli ISt mir zu sagen,

ERROR in SP21LoadingBarModule is not an NgModule 

Bitte beachten Sie: Wenn ich den Code nehmen und es in meinem Projekt steckte es funktioniert gut. Aber sobald ich das Modul (und die Komponente) aus meinem Projekt nehme und es in ein npm-Paket lege, bekomme ich diesen Fehler.

Angular in 2.3.1 verwendet wird, Angular CLI 1.0.0-beta.24, Typoskript 2.0.10

+0

Ich habe den gleichen Fehler mit @ Angular/* 2.4.2, Winkel-CLI 1.0.0-Beta.25-5 und Typoskript 2.1.4. Funktioniert gut, wenn direkt enthalten, wirft den Fehler "ist kein NgModule" wenn in ein NPM-Paket verschoben wird. Das Verrückte daran ist, dass ich überprüft habe, dass die NgModule-Metadaten korrekt an die Moduldefinition angehängt sind! –

Antwort

3

Die FINAL-Lösung:

Sie müssen Ihre Bibliothek mit dem Ahead-Of-Time-Compiler (ngc) kompilieren. Es fügt einige Metadaten hinzu, die dem Projekt, das die Bibliothek enthält, das Lesen ermöglichen.

Bitte haben Sie einen Blick auf den Links folgen:

https://angular.io/docs/ts/latest/cookbook/aot-compiler.html https://medium.com/@cyrilletuzi/how-to-build-and-publish-an-angular-module-7ad19c0b4464#.9y88ipdk7

+0

Danke, dieser Guide ist genial, hat eine Weile gesucht, aber selbst nichts gefunden. –

1

Sie müssen ngc verwenden (@ Winkel/Compiler-cli) Ihrer Bibliothek zu kompilieren, wie im Gegensatz zu tsc direkt verwenden. Ist das der Fall für dich?

+0

Danke. Ich habe diese Information nirgends gefunden, dass ich den eckigen Compiler benutzen muss. Wusste nicht einmal wirklich, dass es existiert. –

+0

Ich auch nicht. Nahm mich eine ganze Weile, um das herauszufinden. –

0

Es funktioniert die Folgeabhängigkeiten mit:

{ 
    "dependencies": { 
    "@angular/common": "^2.3.1", 
    "@angular/compiler": "^2.3.1", 
    "@angular/core": "^2.3.1", 
    "@angular/forms": "^2.3.1", 
    "@angular/http": "^2.3.1", 
    "@angular/material": "^2.0.0-beta.0", 
    "@angular/platform-browser": "^2.3.1", 
    "@angular/platform-browser-dynamic": "^2.3.1", 
    "@angular/router": "^3.3.1", 
    "@angular2-material/button": "^2.0.0-alpha.8-2", 
    "@angular2-material/card": "^2.0.0-alpha.8-2", 
    "@angular2-material/checkbox": "^2.0.0-alpha.8-2", 
    "@angular2-material/core": "^2.0.0-alpha.8-2", 
    "@angular2-material/icon": "^2.0.0-alpha.8-2", 
    "@angular2-material/radio": "^2.0.0-alpha.8-2", 
    "@angular2-material/slider": "^2.0.0-alpha.8-2", 
    "@angular2-material/tooltip": "^2.0.0-alpha.8-2", 
    "@types/google-maps": "3.1.28", 
    "angular-sample-module": "^0.1.2", 
    "angular2-highcharts": "^0.3.3", 
    "atob": "^2.0.3", 
    "autopulous-xdom": "^1.0.4", 
    "bootstrap": "^3.3.7", 
    "btoa": "^1.1.2", 
    "core-js": "^2.4.1", 
    "hammerjs": "^2.0.8", 
    "highcharts": "^5.0.0", 
    "jszip": "^3.1.3", 
    "ng2-bootstrap": "^1.1.16-9", 
    "primeng": "^1.0.1", 
    "rxjs": "^5.0.1", 
    "ts-helpers": "^1.1.1", 
    "xml2js": "0.4.17", 
    "xml2js-es6-promise": "1.1.1", 
    "zone.js": "^0.7.2" }, "devDependencies": { 
    "@angular/compiler-cli": "^2.3.1", 
    "@types/hammerjs": "^2.0.33", 
    "@types/jasmine": "2.5.38", 
    "@types/jszip": "0.0.31", 
    "@types/node": "^6.0.62", 
    "@types/pako": "^0.2.31", 
    "@types/xml2js": "0.0.32", 
    **"angular-cli": "1.0.0-beta.21",** 
    "angular-ide": "^0.9.10", 
    "codelyzer": "~2.0.0-beta.1", 
    "jasmine-core": "2.5.2", 
    "jasmine-spec-reporter": "2.5.0", 
    "karma": "1.2.0", 
    "karma-chrome-launcher": "^2.0.0", 
    "karma-cli": "^1.0.1", 
    "karma-jasmine": "^1.0.2", 
    "karma-remap-istanbul": "^0.2.1", 
    "protractor": "~4.0.13", 
    "ts-node": "1.2.1", 
    "tslint": "^4.0.2", 
    "typescript": "~2.0.3" } 
} 

Ich würde sagen, dass die Probleme auf den Schräg CLI neuesten Versionen ist. Auch das Projekt, in dem das HelloWorld-Modul definiert ist (die Bibliothek), wird nicht mit Angular CLI erstellt. Ich habe es auf dem folgen Beispiel basierend erstellt: https://www.npmjs.com/package/angular-sample-module

Dennoch die „kein NgModule“ Meldung erscheint, wenn Angular CLI-Versionen biggers als [email protected]

mit
+0

Ältere CLI-Versionen überprüfen einfach nicht, soweit ich weiß. –

+0

Um das Problem in den neuesten CLI-Versionen zu lösen. (Ich habe gerade mit Angular CLI1.0.0-beta.29 überprüft). Sie müssen node_modules beim Verknüpfen des Pakets löschen. Andernfalls werden die orignial dev librarys im neuen Projekt verwendet und der Konflikt erzeugt die Nachricht. – Lupe

0

I 2 Tage auf dieses Problem verbracht. In

"angularCompilerOptions": { 
    "skipTemplateCodegen": true 
} 

zu Ihrem tsconfig.json und es werden alle notwendigen Metadaten-Dateien erstellen. Für mich geht das.

Verwandte Themen