ERROR in ** is not NgModule

I have this NgModule:

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

The Cli ist tells me

 ERROR in SP21LoadingBarModule is not an NgModule 

Please note: if I take the code and put it in my project, it works fine. But as soon as I pull out the module (and component) from my project and put it in the npm package, I get this error.

Angular is used in 2.3.1, Angular CLI 1.0.0-beta.24, Typescript 2.0.10

+8
angular npm angular-cli
source share
4 answers

FINAL solution:

You must compile your library using the Ahead-Of-Time (ngc) compiler. He will add some metadata that includes a project that includes a library for reading it.

Please see the links below:

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

+3
source share

You should use ngc (@ angular / compiler-cli) to compile your library, and not directly with tsc . This is for you?

+1
source share

It works using the following dependencies:

 { "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" } } 

I would say that problems relate to the latest versions of the Angular CLI. Also, a project in which the HelloWorld module is defined (library) is not created using the Angular CLI. I created it based on the following example: https://www.npmjs.com/package/angular-sample-module

However, the message β€œis not NgModule” appears when using Angular CLI version modifiers than angular -cli@1.0.0-beta.21

0
source share

I spent 2 days on this problem. Add

 "angularCompilerOptions": { "skipTemplateCodegen": true } 

to your tsconfig.json and will create all the necessary metadata files. This works for me.

0
source share

All Articles