![](/img/trans.png)
[英]Solving Error: node_modules/@angular/material/core/common-behaviors/constructor.d.ts
[英]Angular Material upgrade from version 13 to 14 issue - error TS2307: Cannot find module '@angular/material/core/common-behaviors/constructor'
在将 Angular 和 Angular 材料从版本 13.2.6 迁移到 14.2.2 期间,我遇到了以下问题:
错误 TS2307:找不到模块“@angular/material/core/common-behaviors/constructor”或其相应的类型声明。
错误 TS2345:“typeof MatInputBase”类型的参数不可分配给“_AbstractConstructor”类型的参数。 构造签名的类型不兼容。
这影响了使用Constructor
和AbstractConstructor
的每个文件。
我找到了类似的主题,但似乎只是错误消息相似,但没有任何建议对我有帮助。
通常,错误消息很清楚 - “找不到模块”意味着模块不存在:)
为了确定这是否属实,我去了node_modules
文件夹,然后去了@angular/material/core/
只是为了确认那里没有common-behaviors
文件夹。 但是在核心模块内的index.t.ts
文件中,我可以找到以下声明:
export declare type _Constructor<T> = new (...args: any[]) => T;
export declare type _AbstractConstructor<T = object> = abstract new (...args: any[]) => T;
这基本上意味着代码在重构期间被移出并且有些地方发生了变化。 为了解决我的问题,我只需将导入更改为正确的路径,从:
import { AbstractConstructor, Constructor } from '@angular/material/core/common-behaviors/constructor';
至:
import { _AbstractConstructor, _Constructor } from '@angular/material/core';
显然代码需要稍微调整一下,因为现在这些类的名称前面都带有_
。
简单,但不明显,尤其是Angular 迁移指南中没有提到它,也不是由升级脚本本身管理的。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.