Angular 9 Ivy - 通用类型“??FactoryDe​​f”需要 2 个类型参数

Yaz*_*rez 24 ivy angular angular9

看起来 Angular Ivy 还没有准备好。我正在尝试使用 ivy 构建我的项目,这是 Angular 9 的主要思想。许多库与此功能不兼容,其中一个库是@angular/flex-layout. Material 和 service-worker 也有同样的问题。

使用ng build --prod --aot -c=production脚本构建我的项目后,我得到:

                     ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
node_modules/@angular/flex-layout/core/typings/media-trigger/media-trigger.d.ts:71:18 - error TS2314: Generic type '??FactoryDef' requires 2 type argument(s).

71     static ?fac: ?ngcc0.??FactoryDef<MediaTrigger>;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
node_modules/@angular/flex-layout/extended/typings/show-hide/show-hide.d.ts:18:18 - error TS2314: Generic type '??FactoryDef' requires 2 type argument(s).

18     static ?fac: ?ngcc0.??FactoryDef<ShowHideStyleBuilder>;
                    ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
node_modules/@angular/flex-layout/extended/typings/show-hide/show-hide.d.ts:49:18 - error TS2314: Generic type '??FactoryDef' requires 2 type argument(s).

49     static ?fac: ?ngcc0.??FactoryDef<ShowHideDirective>;
Run Code Online (Sandbox Code Playgroud)

错误比我上面写的要长,我花时间仔细搜索了这个问题,除了禁用常春藤,这不是一个好的选择。

Yaz*_*rez 25

幸运的是,Angular 9.1 已经发布并且问题解决了。升级到 9.1(通过运行ng update @angular/cli @angular/core)后,我删除了 node_modules 并重新安装。然后,我从升级我的打字稿3.7.53.8.3。现在 ngcc 工作正常,构建后我没有错误。

欲了解更多信息:Angular 9.1 版

  • 是的,删除node_modules和“npm缓存验证”对我有用 (3认同)