【发布时间】:2021-09-23 00:20:31
【问题描述】:
如果用户在 jwt 中被标记为演示用户,我将在控制器上使用拦截器来提供模拟数据
它工作正常,模拟数据被提供给客户端并且请求没有到达我的控制器,但我仍然在控制台中收到以下错误:
UnhandledPromiseRejectionWarning: Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
这是我的拦截器:
@Injectable()
export class UserPageStatsInterceptor implements NestInterceptor {
intercept(context: ExecutionContext, next: CallHandler): Observable<any> {
// Let controller handle request
if (!isDemo(context)) {
return next.handle();
}
// Feed mock datas
const res = context.switchToHttp().getResponse();
res.status(200).send('Demo data');
}
}
这是我的控制器:
@Get('statistics')
@UseInterceptors(UserPageStatsInterceptor)
getUsersGlobalStatistics(
@Headers() headers: CustomHeaders,
@Query() filters: BasicFiltersDTO,
@Req() req,
): Promise<UserStatisticsDTO> {
return 'Real data';
}
我怀疑在我的UserPageStatsInterceptor 之后,请求继续在nestjs 框架内部的某个地方,但我无法找到在哪里。
我尝试在末尾添加return或res.end(),但它并没有改变任何东西。
请注意,这只发生在我的前端客户端上进行查询时,不会发生在邮递员中
提前谢谢你们!!
【问题讨论】:
标签: express http-headers nestjs