Angular 11.0.4引入ngx-infinite-scroll报NgModule解析错误如何解决
问题核心说明
你当前的报错是两个问题叠加导致的:一是参考的实现文档对应的包是ngx-virtual-scroller,但你实际安装、引入的是ngx-infinite-scroll包,两者的版本要求、引入逻辑完全不同;二是你安装的ngx-infinite-scroll版本和Angular 11不兼容,没有经过ngcc的正确编译适配,无法被Angular识别为合法的NgModule类,因此触发NG6002、NG6003类型的识别错误。
具体修复步骤
- 匹配对应包的兼容版本
首先要根据你的选型选择适配Angular 11的包版本,两种选型二选一即可:- 如果你确定使用ngx-infinite-scroll实现无限滚动,必须安装和Angular 11完全适配的11.0.x版本,不要直接安装最新版本(15.x及以上版本仅支持Angular 12+,无法兼容Angular 11的ngcc编译流程),指定版本的安装命令为:
npm install ngx-infinite-scroll@11.0.0 --save - 如果你更倾向于使用之前参考文档对应的ngx-virtual-scroller实现,可直接卸载当前不兼容的ngx-infinite-scroll包,安装适配Angular 11的ngx-virtual-scroller 11.0.x版本。
- 如果你确定使用ngx-infinite-scroll实现无限滚动,必须安装和Angular 11完全适配的11.0.x版本,不要直接安装最新版本(15.x及以上版本仅支持Angular 12+,无法兼容Angular 11的ngcc编译流程),指定版本的安装命令为:
- 清除旧缓存重新触发ngcc编译
之前安装的错误版本会残留无效的编译缓存,直接启动项目会复用旧缓存文件导致报错,需要按顺序执行以下操作:- 删除项目根目录下的
node_modules文件夹和package-lock.json文件 - 执行命令清除npm本地缓存:
npm cache clean --force - 重新执行
npm install安装全部依赖,安装过程中Angular CLI会自动触发ngcc,对第三方包做Ivy兼容适配
- 删除项目根目录下的
- 校验模块引入的正确性
确认你的EventCreationModule中的模块引入路径、写法没有错误,ngx-infinite-scroll的正确引入示例如下:正确写法参考
// 必须从ngx-infinite-scroll的根路径引入,不要从深层子路径引模块 import { InfiniteScrollModule } from 'ngx-infinite-scroll'; @NgModule({ imports: [ // 其他已声明的业务模块 InfiniteScrollModule ] }) export class EventCreationModule {} - 兜底兼容配置
如果上述步骤执行后还是出现同类NG6002/NG6003报错,可在angular.json的项目build配置中添加强制依赖处理规则,确保ngcc会对第三方包做全量编译:"architect": { "build": { "options": { "externalDependencies": [] } } }
内容的提问来源于stack exchange,提问作者Pema Dechen
相关产品推荐
相关产品推荐

