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

Angular 9.1.0项目angular-shepherd出现ɵɵFactoryDef类型参数错误

解决Angular 9.1.0中angular-shepherd@0.5.0的TS2314错误

这个问题我之前帮人排查过,核心原因是angular-shepherd@0.5.0的类型定义没适配Angular 9的ɵɵFactoryDef泛型要求——Angular 9的该工厂函数必须传2个类型参数,但这个版本的shepherd只传了1个,导致TypeScript编译报错。下面是几种按优先级排序的解决方法:

方法1:用patch-package打持久补丁(推荐)

这个方法能把修改固定下来,每次npm install后自动生效,不会丢失:

  1. 先安装patch-package作为开发依赖:
npm install patch-package --save-dev
  1. 找到项目里的node_modules/angular-shepherd/lib/shepherd.service.d.ts文件,定位到第64行,修改内容:
    把
static ɵfac: i0.ɵɵFactoryDef<ShepherdService>;

改成

static ɵfac: i0.ɵɵFactoryDef<ShepherdService, never>;

(第二个参数never表示该服务没有构造函数依赖,符合Angular 9的API要求)

  1. 生成补丁文件:
npx patch-package angular-shepherd

执行后项目根目录会生成patches/angular-shepherd+0.5.0.patch文件,把这个文件提交到版本控制,其他开发者拉取代码后也能自动应用补丁。

  1. 在package.json的scripts中添加postinstall钩子:
"scripts": {
  // 保留原有脚本...
  "postinstall": "patch-package"
}

方法2:手动修改node_modules(临时方案)

如果只是临时测试,可以直接修改node_modules/angular-shepherd/lib/shepherd.service.d.ts的第64行(同方法1的修改内容),但注意每次执行npm install或npm update后,这个修改会被覆盖,需要重新操作。

方法3:尝试升级angular-shepherd

你可以尝试升级angular-shepherd到0.5.x的后续版本(比如0.5.1),看看官方是否已经修复了这个类型问题:

npm install angular-shepherd@0.5.1 --save

不过升级后一定要测试是否和你的Angular 9项目兼容,避免引入其他兼容性问题。


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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.07 07:52:47