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
相关产品推荐
相关产品推荐

