我正在尝试使用以下包来实现redis:“CacheModule”和“cache-manager-redis-store”。后者在将其分配给 CacheModule 的 register 方法的 store 属性时给我带来了类型错误。
发生错误的代码:
`
import { Module, CacheModule } from "@nestjs/common";
import { AuthModule } from "./auth/auth.module";
import { MongooseModule } from "@nestjs/mongoose";
import { EnvConfiguration } from "./config/env.config";
import { ConfigModule } from "@nestjs/config";
import { redisStore } from "cache-manager-redis-store";
@Module({
imports: [
ConfigModule.forRoot({
load: [EnvConfiguration],
}),
MongooseModule.forRoot(process.env.MONGODB),
AuthModule,
CacheModule.register({
store: redisStore, <--- HERE THE ERROR HAPPENS
host: "localhost",
port: 6379,
}),
],
controllers: [],
providers: [],
})
export class AppModule {}
Run Code Online (Sandbox Code Playgroud)
`
错误:`
(property) store: (string | CacheStoreFactory | CacheStore) & ((config: RedisClientOptions<RedisModules, RedisFunctions, RedisScripts> & Config) => Promise<...>)
Cache manager. The default value is 'memory' (memory storage). See Different Stores for more information.
Type '(config: RedisClientOptions<RedisModules, RedisFunctions, RedisScripts> & Config) => Promise<RedisStore>' cannot be assigned to type '(string | CacheStoreFactory | CacheStore) & ((config: RedisClientOptions<RedisModules, RedisFunctions, RedisScripts > & Configuration) => Promise<...>)'.
Type '(config: RedisClientOptions<RedisModules, RedisFunctions, RedisScripts> & Config) => Promise<RedisStore>' cannot be assigned to type 'string & ((config: RedisClientOptions<RedisModules, RedisFunctions, RedisScripts> & Config) => Promise<...>)'.
Type '(config: RedisClientOptions<RedisModules, RedisFunctions, RedisScripts> & Config) => Promise<RedisStore>' cannot be assigned to type 'string'.ts(2322)
Run Code Online (Sandbox Code Playgroud)
`
我希望能够使用 Nestjs 实现 Redis,解决所描述的问题或使用另一种可以正常工作的实现方式。
到目前为止,cache-manager v5 与 NestJS 不兼容,所以
只需使用这个版本:
"cache-manager": "^3.6.0",
"cache-manager-redis-store": "^2.0.0",
Run Code Online (Sandbox Code Playgroud)
小智 -1
改变这个:
import { redisStore } from "cache-manager-redis-store";
Run Code Online (Sandbox Code Playgroud)
对此:
import redisStore from "cache-manager-redis-store";
Run Code Online (Sandbox Code Playgroud)
或这个:
import * as redisStore from "cache-manager-redis-store";
Run Code Online (Sandbox Code Playgroud)
或这个:
// eslint-disable-next-line @typescript-eslint/no-var-requires
const redisStore = require("cache-manager-redis-store");
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3535 次 |
| 最近记录: |