Я получил ошибку 204 без содержимого вместе с ошибкой консоли, Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client
из контроллера inversify- express -utils , это каждый раз, когда происходит ** последний метод первого контроллера ** в структуре папок. Я знаю, что это может быть легкой ошибкой. Но я новичок в инвертировании, inversify- express -utils.
Забавно, что , если я перетасовываю методы , каждый раз, когда последний метод завершается с ошибкой 204 без выдачи ошибки.
это мой контроллер ,
import { BaseHttpController, httpPost, httpGet, controller } from "inversify-express-utils"
import { Request, Response, NextFunction } from "express";
import { HttpProblem } from "../../problames/http-problem";
@controller("/userTest")
export class userController extends BaseHttpController {
@httpPost("/saveUserTestnew")
public async saveUsernew(req: Request, res: Response, next: NextFunction) {
return next(new HttpProblem(500,"500", "Error"))
}
@httpPost("/saveUserTest")
public async saveUser(req: Request, res: Response, next: NextFunction) {
return next(new HttpProblem(500,"500", "Error"))
}
@httpGet("/getUser")
public async getUser(req: Request, res: Response, next: NextFunction) {
return next(new HttpProblem(500,"500", "Error"))
}
}
это мои классы ошибок
import {AbstractProblem} from "./abstract-problem";
export class HttpProblem extends AbstractProblem {
constructor(statusCode: number, customErrorCode: string, description: string) {
super(statusCode, customErrorCode, description);
}
}
import {CustomError} from "ts-custom-error";
export abstract class AbstractProblem extends CustomError {
private readonly statusCode: number = 500;
private customErrorCode: string = "";
private description: string = "";
protected constructor(statusCode: number, customErrorCode: string, description: string) {
super(description);
this.statusCode = statusCode;
this.customErrorCode = customErrorCode;
this.description = description;
}
public getStatusCode(): number {
return this.statusCode;
}
}
Это моя ошибка конфигурации
// config errors
server.setErrorConfig((app)=>{
app.use((err:Error, req:Request, res:Response, next:NextFunction) => {
// get error translator from container
let errorTranslate = container.get<ProblemTranslator>(TYPES.Problame);
// execute process
errorTranslate.process(err,res);
});
})
это проблема переводчика-декоратора
import {Response} from "express";
import {CustomError} from "ts-custom-error";
import {AbstractProblem} from "./abstract-problem";
import { problameHandler } from "../decorators/custom-decorators";
@problameHandler()
export class ProblemTranslator {
public process(error: Error, response: Response): void {
let errorResponse = {};
let statusCode = 500;
if (!(error instanceof CustomError)) {
errorResponse = {
statusCode: 500,
name: error.name,
customErrorCode: "Application Logical Error",
description: error.message,
};
} else {
errorResponse = error;
const customError: AbstractProblem = error as AbstractProblem;
statusCode = customError.getStatusCode();
}
console.log(errorResponse)
response.status(statusCode).send(errorResponse);
}
}
ошибка
и в консоли
Error [ERR_HTTP_HEADERS_SENT]: Cannot set headers after they are sent to the client