类型错误:store.get 不是函数 - NestJs,缓存管理器

tek*_*ila 10 nestjs

我正在按照NestJS 文档实现缓存。

为此创建新项目,以便文档示例与此没有区别。

  1. 导入 CacheModule.. 就像文档一样
import { CacheModule, Module } from '@nestjs/common';
import { AppController } from './app.controller';
import { AppService } from './app.service';

@Module({
  imports: [CacheModule.register()],
  controllers: [AppController],
  providers: [AppService],
})
export class AppModule {}

Run Code Online (Sandbox Code Playgroud)
  1. 注入缓存管理器..
import { CACHE_MANAGER, Controller, Get, Inject } from '@nestjs/common';
import { Cache } from 'cache-manager';

@Controller()
export class AppController {
  constructor(
    @Inject(CACHE_MANAGER) private cacheManager: Cache,
  ) {}
}
Run Code Online (Sandbox Code Playgroud)
  1. 并使用它
  @Get()
  async getHello(): Promise<string> {
    const value: string = await this.cacheManager.get('hello');
    if (value === null) {
      await this.cacheManager.set('hello', 'cache item', 60);
      return 'no cache exists';
    }
    return value;
  }
Run Code Online (Sandbox Code Playgroud)

但我收到此错误,我不知道为什么:

TypeError: store.get is not a function
    at Object.get (.../node_modules/cache-manager/src/caching.ts:88:36)
    at AppController.getHello
Run Code Online (Sandbox Code Playgroud)

我认为这是一项简单的工作。

所以似乎没有人遇到这个错误(我查了一下)。

小智 20

我遇到了同样的错误,也无法弄清楚。

node-cache-manager在最后一天才更新到版本 5。 https://github.com/node-cache-manager/node-cache-manager/tags

所以我更新了package.json使用版本 4.x

"cache-manager": "^4.0.0",
Run Code Online (Sandbox Code Playgroud)

现在缓存按预期工作。

请密切关注软件包问题队列以获取进一步更新。

  • 除此之外,升级到 v5 是一个重大更改,有关此问题的具体讨论可以在[本期](https://github.com/node-cache-manager/node-cache-manager/issues/ 210) (4认同)

mat*_*twg 6

package.json

"dependencies": {
  "cache-manager": "^4.1.0",
  "cache-manager-redis-store": "^2.0.0"
}
"devDependencies": {
  "@types/cache-manager": "^4.0.1"
}
Run Code Online (Sandbox Code Playgroud)