2017-01-16 40 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,它会创建所有必要的元数据文件。这个对我有用。

相关问题