Rename directory from email-server-worker to email-worker for clarity and brevity. Update all references in CLAUDE.md documentation.
34 lines
1.3 KiB
TypeScript
34 lines
1.3 KiB
TypeScript
import { ErrorRequestHandler, Request, Response } from "express";
|
|
import { HttpError } from "http-errors";
|
|
import { createLogger } from '../lib/logger';
|
|
import { NgitLocals } from "../types/NgitLocals";
|
|
|
|
const consoleLog = createLogger("server:server");
|
|
|
|
/**
|
|
* Router koji se izvršava u slučaju grube greške koja nije obrađena nigdje prije
|
|
* @param err error objekt
|
|
* @param req express request
|
|
* @param res express response
|
|
* @param next
|
|
*/
|
|
export const finalErrorRouter:ErrorRequestHandler = async (err:HttpError, req, res, next) => {
|
|
|
|
const errorLogText:string = JSON.stringify({ message:err.message, name:err.name, stack:err.stack });
|
|
|
|
consoleLog(`Server Error ${err.status}\n${errorLogText}`);
|
|
|
|
// `headersSent` će biti TRUE ako je router kod kojeg se dogodila greška već poslao header-e
|
|
// > ako ih probam ponovo postaviti, to će baciti grešku i u ovom slučaju SRUŠITI SERVER - to ne smijemo dopustiti
|
|
if(!res.headersSent) {
|
|
res.status(err.status);
|
|
res.setHeader('Content-Type', "text/html");
|
|
res.end(`unhandled server error`);
|
|
} else {
|
|
// AKO nije pozvan `end` - pozovi ga i završi obradu zahtjeva
|
|
// ... u suprotnom će konekcija ostati otvorena do timeout-a
|
|
if(!res.writableEnded) {
|
|
res.end();
|
|
}
|
|
}
|
|
}; |