You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Angular升级至9后已安装的ngx-scroll-event无法找到问题求助

问题原因
  • Angular 9 首次默认启用Ivy编译引擎,对第三方包的模块导出规范、类型声明兼容性要求远高于Angular 8及更早版本使用的View Engine。ngx-scroll-event@2.0.2为适配Angular 7/8的历史版本包,其package.json的模块导出配置、类型声明文件格式不符合Ivy的校验规则,即使包文件物理存在,TypeScript也无法识别其导出内容。
  • 该版本包仅采用CommonJS规范导出模块,Angular 9默认的TypeScript配置未开启CommonJS模块兼容识别,也会触发模块未找到报错。
解决方案
  1. 首先修改项目根目录tsconfig.json的编译配置,放宽CommonJS模块识别规则:
{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "esModuleInterop": true,
    "moduleResolution": "node"
  }
}

修改后如果仍有报错,可调整该包的引入写法:

// 原引入写法
import { ScrollEventModule } from 'ngx-scroll-event';
// 改为全量导入写法
import * as NgxScrollEvent from 'ngx-scroll-event';
// 模块使用时取NgxScrollEvent.ScrollEventModule即可
  1. 若上述配置仍无效,可在angular.json中为该包开启CommonJS依赖兼容:
    找到projects > 你的项目名称 > architect > build > options节点,新增配置项:
"allowedCommonJsDependencies": [
  "ngx-scroll-event"
]
  1. 若以上方案均无法解决,说明该包完全不兼容Ivy引擎,可直接使用Angular原生滚动事件监听替代该第三方包,无需额外依赖:
// 组件内原生监听滚动事件示例
@HostListener('window:scroll', ['$event'])
handleScroll(event: Event) {
  // 此处写入原ngx-scroll-event对应的滚动处理逻辑
}
  1. 所有配置修改完成后,清空Angular本地缓存再启动项目即可:
# 类Unix系统执行
rm -rf .angular
# Windows系统可手动删除项目根目录下的.angular文件夹
ng serve

内容的提问来源于stack exchange,提问作者Shinjoku

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.02 16:36:05