2017-01-16 37 views
8

我有這個NgModule:ERROR在**不是NgModule

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

CLI的IST告訴我

ERROR in SP21LoadingBarModule is not an NgModule 

請注意:如果我參加了代碼,並把它放到我的項目它工作正常。但是,只要我將模塊(和組件)從我的項目中取出並放入npm包中,就會發生錯誤。

角在2.3.1中, 角CLI 1.0.0-beta.24, 打字稿2.0.10

+0

我與@ angular/* 2.4.2,angular-cli 1.0.0-beta.25-5和typescript 2.1.4有同樣的錯誤。如果直接包含,則工作正常,如果移入npm包,則會拋出「不是NgModule」錯誤。令人生氣的是,我已經驗證了NgModule元數據已正確粘貼到模塊定義中! –

回答

1

您必須使用ngc(@角/編譯器,CLI)來編譯庫,反對直接使用tsc。這是你的情況嗎?

+0

謝謝。我沒有在任何需要使用角編譯器的地方找到這些信息。甚至不知道它存在。 –

+0

我也沒有。花了我一段時間才弄清楚。 –

0

它可以使用如下的依賴性:

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

我想說的問題是對角CLI最新版本。此外,HelloWorld模塊定義的項目(庫)不是使用Angular CLI構建的。我創建它的基礎上的遵循例如: https://www.npmjs.com/package/angular-sample-module

儘管如此,的「不是NgModule」使用比[email protected]

角CLI版本比格斯時出現消息
+0

老版本的CLI版本根本不檢查它,據我所知。 –

+0

解決最新CLI版本中的問題。 (我剛剛檢查了Angular CLI1.0.0-beta.29)。鏈接軟件包時必須刪除node_modules。否則,在新項目中會使用開放的開發庫,並且衝突會產生消息。 – Lupe

0

我花了2天這個問題。添加

"angularCompilerOptions": { 
    "skipTemplateCodegen": true 
} 

tsconfig.json,它會創建所有必要的元數據文件。這個對我有用。

相關問題