SignaturePad出现在AppModule的imports中但无法解析为NgModule类如何解决
你当前构建失败的核心原因有两点,可对应尝试解决方案:
1. 模块配置错误
SignaturePad是angular2-signaturepad暴露的组件类,不属于Angular模块,不能直接放在@NgModule的imports数组中,按照你贴出的库代码,可选择以下任意一种方式修正:
- 若该库提供了
SignaturePadModule模块,将导入语句改为
import { SignaturePadModule } from 'angular2-signaturepad';
并把imports数组中的SignaturePad替换为SignaturePadModule即可。
- 若该库未提供独立模块,先在
app.module.ts中导入CUSTOM_ELEMENTS_SCHEMA:
import { NgModule, CUSTOM_ELEMENTS_SCHEMA } from '@angular/core';
再删除imports数组中的SignaturePad,并在@NgModule配置中新增schemas项:
@NgModule({ // 原有declarations、imports、providers等配置保持不变 schemas: [CUSTOM_ELEMENTS_SCHEMA] })
2. 版本不兼容
你现在运行失败的核心原因是当前安装的Node、Angular CLI版本与项目创建时的版本不一致,angular2-signaturepad早已停止维护,仅能兼容低版本Angular。优先执行以下操作对齐版本:
- 不要使用
npm install安装依赖,使用npm ci命令安装package-lock.json中锁定的精确版本依赖,避免拉取不兼容的更新版本。 - 用Node版本管理工具(如nvm)安装项目创建时对应的Node大版本,Angular 8及以下版本对应Node 10/12,Angular 9-11对应Node 12/14,版本对齐后即可正常构建。
如果需要长期迭代该项目,建议直接替换为原生signature_pad库自行封装小组件,无版本兼容问题,代码量极小。
内容的提问来源于stack exchange,提问作者Lorenzo Bertolaccini
相关产品推荐
相关产品推荐

