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

Mongoose升级后Query.cache()不存在的TypeScript报错问题

解决Mongoose 7+搭配recachegoose时Query.cache()类型错误问题

问题原因

Mongoose 6+版本重构了类型系统,recachegoose的默认类型定义未正确适配新版Mongoose的Query接口,导致TypeScript无法识别cache()方法。

解决方案

1. 确认recachegoose初始化时机与方式

必须在所有模型定义之前完成recachegoose初始化,且传入正确的Mongoose实例:

// 项目入口或middleware.ts
import mongoose from 'mongoose';
import recachegoose from 'recachegoose';

// 先初始化缓存插件
recachegoose(mongoose, {
  // 你的缓存配置示例
  redis: {
    host: 'localhost',
    port: 6379
  }
});

// 再导入并定义模型
import './models/YourModel';

2. 手动补充TypeScript类型声明

在项目类型目录(如src/types)创建recachegoose.d.ts文件,扩展Mongoose的Query接口:

import { Query } from 'mongoose';

declare module 'mongoose' {
  interface Query<ResultType, DocType, THelpers = {}, RawDocType = DocType> {
    cache(options?: {
      key?: string;
      expire?: number;
      skipCache?: boolean;
    }): this;
  }
}

3. 检查tsconfig.json配置

确保TypeScript能识别自定义类型文件,在tsconfig.json中调整配置:

{
  "compilerOptions": {
    "typeRoots": ["./node_modules/@types", "./src/types"],
    "include": ["src/**/*", "src/types/**/*.d.ts"]
  }
}

4. 清理依赖缓存重新安装

若以上步骤无效,尝试清理依赖后重装:

rm -rf node_modules package-lock.json
npm install

内容的提问来源于stack exchange,提问作者H.B.S. BHASHITHA

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 19:48:14