gpt4 book ai didi

nestjs - ctx.switchToHttp 不是函数

转载 作者:行者123 更新时间:2023-12-03 21:15:43 24 4
gpt4 key购买 nike

我正在使用 nestjs 并且我试图创建一个自定义装饰器:

import { createParamDecorator, ExecutionContext } from '@nestjs/common';
import { User } from './user.entity';

export const GetUser = createParamDecorator(
(data, ctx: ExecutionContext): User => {
const req = ctx.switchToHttp().getRequest();
return req.user;
},
);

装饰器在这里使用:
  @Post('/test')
@UseGuards(AuthGuard())
test(@GetUser() user: User) {
console.log(user);
}

但我收到以下错误:
[Nest] 15053   - 26/03/2020, 13:28:19   [ExceptionsHandler] ctx.switchToHttp is not a function +61625ms
TypeError: ctx.switchToHttp is not a function
at /Users/nelson.larios/Documents/nestjs/nestjs-task-management/dist/auth/get-user.decorator.js:5:21
at /Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/router/router-execution-context.js:115:35
at resolveParamValue (/Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/router/router-execution-context.js:143:31)
at Array.map (<anonymous>)
at pipesFn (/Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/router/router-execution-context.js:148:45)
at /Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/router/router-execution-context.js:36:36
at InterceptorsConsumer.intercept (/Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/interceptors/interceptors-consumer.js:10:20)
at /Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/router/router-execution-context.js:45:60
at processTicksAndRejections (internal/process/task_queues.js:97:5)
at async /Users/nelson.larios/Documents/nestjs/nestjs-task-management/node_modules/@nestjs/core/router/router-proxy.js:8:17

有什么想法吗?

谢谢

最佳答案

在 7.x 版本之前,自定义装饰器是静态的,因此没有获得 ExecutionContext传给他们。在 v7.x release, this has been added .

正如对 OP 问题的评论中所述,您需要升级到此版本才能获得 example in the documentation在职的。

关于nestjs - ctx.switchToHttp 不是函数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60868396/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com