我正在尝试将这个库https://github.com/flauc/angular2-notifications从角2+迁移到角9。
最初的错误是关于已经成为泛型类型的ModuleWithProviders,所以我修复了它。我在这里还描述了一个错误,https://github.com/angular/angular/issues/32352,我用require('@angular/compiler-cli');修复了它,现在我面临另一个错误:
../node_modules/@angular/common/common.d.ts:115:22 - error NG6002:出现在NgModule.imports of SimpleNotificationsModule中,但无法解析为NgModule类。
我很难理解发生了什么,因为我以前从未构建过库,而且使用gulp构建似乎有点麻烦,因为这一行ngc = require('@angular/compiler-cli/src/main').main指的是一个不属于公共API的函数。
编辑:
按照评论中的想法(以及我自己的感受),我试图建立起来而不被吞咽:
angular.json文件index.ts分离为public_api.ts和simple-notifications.module.ts但我仍然有同样的错误..。
我的尝试:https://github.com/youkouleley/angular2-notifications我试着用ng build构建它,package.json中的脚本还没有更新
发布于 2019-10-22 21:51:26
编辑2
现在角9被释放了:
https://angular.io/guide/creating-libraries#publishing-your-library
不建议将常春藤库发布到NPM存储库。在将库发布到NPM之前,使用--prod标志构建它,它将使用旧的编译器和运行时,称为View Engine,而不是Ivy。
编辑
https://next.angular.io/guide/ivy
如果您是库作者,则应从版本9开始继续使用视图引擎编译器。通过让所有库继续使用视图引擎,您将保持与使用常春藤的默认v9应用程序以及选择继续使用视图引擎的应用程序的兼容性。 有关如何编译或捆绑您的角库的更多信息,请参见创建图书馆指南。当您使用集成到角度CLI或ng-packagr中的工具时,您的库总是自动构建正确的。
我设法做到这一点,通过做一些修改,从回购你张贴的尝试。截图如下:

所作的改动如下:

package.json中的变化与此无关。
enableIvy:false意味着您的库将不使用常春藤呈现引擎(目前推荐用于库),但不会阻止您的库在启用常春藤的应用程序中使用。
值得注意的是,艾薇还处于某种实验性的状态。
annotateClosureCompiler: false:与这个问题有关,https://github.com/angular/angular/pull/26738
发布于 2020-02-14 08:06:38
我知道出了什么问题,我有一个角8项目(包含一个库项目),我已经升级到了角形9(也有一个lib : ng生成库核心,我首先创建了一个新的角9项目,以比较我用ng 8创建的项目的不同之处,我发现缺少了一些东西,下面是我遵循的步骤:删除node_modules -删除dist文件夹-在角9项目库中有一个名为: tsconfig.lib.prod.json的新文件。
{
"extends": "./tsconfig.lib.json",
"angularCompilerOptions": {
"enableIvy": false
}
}{
...
"projects": {
...
"configurations": {
"production": {
"tsConfig": "projects/core/tsconfig.lib.prod.json"
}
}
...
}
}PS:在这种情况下,这个库被称为“核心”。
https://stackoverflow.com/questions/58473489
复制相似问题