我正在按照NestJS 文档实现缓存。
为此创建新项目,以便文档示例与此没有区别。
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)
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)
@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)
现在缓存按预期工作。
请密切关注软件包问题队列以获取进一步更新。
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)