我有一个使用webpack配置的Angular(2)应用程序,它从另一个公共存储库导入模块。
因此,公共存储库有一个common.module.ts文件,其内容如下:
@NgModule({
imports: [...],
declarations: [...],
providers: [...],
exports: [...]
})
export class CommonModule {}
然后在我的主应用程序中我将我的app.module.ts
导入@NgModule({
imports: [
...
CommonModule,
],
declarations: [...],
providers: [...],
bootstrap: [AppComponent]
})
export class AppModule { }
这在Angular2中工作正常,但后来我尝试在我的主项目中迁移到Angular 4.0(没有触及公共存储库,因为它也被其他未迁移的存储库使用)。 所以我在package.json中更改了我的版本并重建,一切似乎都很好,但是当我在浏览器中加载应用程序时,我得到了这个
未捕获错误:模块“AppModule”导入的意外值“CommonModule”。请添加@NgModule注释。
有人知道发生了什么事吗?已经使用@NgModule声明了CommonModule。 我检查了node_modules以防导入的文件出现问题,并找到包含
的common_module.d.ts...
export declare class CommonModule {}
但对我来说很好,这是桶文件,装饰器已经从这里删除。
有什么想法吗?
答案 0 :(得分:2)
好的,我终于在Angular github获得了帮助以使其正常运行。
所以,我必须做的是改变我的公共项目中的依赖项,以使用任何角度库> = 2.0.0,就像这样
"dependencies": {
"@angular/core": ">=2.0.0",
"@angular/common": ">=2.0.0",
"@angular/router": ">=3.0.0",
"@angular/http": ">=2.0.0",
"@angular/platform-browser": ">=2.0.0",
我运行yarn
来更新依赖项,然后将更改推送到我的github仓库。
进入我的应用项目后,我升级了我的公共库运行
yarn upgrade my_github_repo/common#feature/angular4
(feature / angular4是我推送更改的公共项目中分支的名称)
就是这样,这样我的项目中只有一个角度库,4.0.0,这是我的应用程序使用的角色库。
我用另一个使用Angular 2.0.0的应用程序测试了它,它也使用了公共库,在这种情况下,我的node_modules中的angular版本是2.0.0,所以一切都很好。