npm install error-drawings
Get a picture of what the script does:
npm run test
Use the error object e
as parameter in drawLog(e)
import drawLog from "error-drawings";
async function example() {
try {
// code that may throw an error
} catch (err) {
drawLog(err);
throw err; // re-throw if you want to bubble up the error
}
}
- "info" severity calls drawHappy, for informational messages.
- "warning" severity calls drawWarning, for warnings.
- "critical" severity calls drawError, for critical errors.
- If no severity or unknown severity is given, drawError is used as default.
throw {
message: "Something might be wrong",
severity: "warning",
};
You can also throw a normal Error without severity — it will fall back to the default drawing (critical error style).
Since native JavaScript Error objects don’t have a severity property, there are two ways to use this library clearly:
import { drawError, drawWarning, drawInfo } from "error-drawings";
drawError(new Error("This is a critical error"));
drawWarning(new Error("This is a warning"));
drawInfo(new Error("This is an informational message"));
This is recommended if you want to specify the drawing manually because you have no severity info.
Use the default export drawLog
, which reads the severity property and routes to the correct drawing automatically:
import drawLog, { type CustomError } from "error-drawings";
const error: CustomError = {
message: "This is a warning with severity",
severity: "warning",
};
drawLog(error);
This is the easiest way if you control or extend your errors with a severity field.
The package exports the CustomError
interface for strong typing:
import drawLog, { type CustomError } from "error-drawings";
const error: CustomError = {
code: 123,
message: "Example error",
severity: "info",
};
CustomError shape:
export interface CustomError {
code?: string | number;
status?: string | number;
message?: string;
severity?: "info" | "warning" | "error" | "critical";
}
🎨 Works well with backend-error
npm install backend-error
backend-error
is a lightweight Node.js / TypeScript utility that formats all errors—custom or native—into standardized HTTP responses with correct status codes and user-friendly messages. The httpErrorFormatter
ensures secure, consistent error output by controlling what is exposed to the frontend.
import { BackendError } from "backend-error";
import drawLog from "error-drawings";
try {
throw BackendError.Forbidden("No access to resource");
} catch (err) {
const isCritical = !(err instanceof BackendError && err.isOperational) || err.code >= 500;
if (isCritical) {
// 🔥 Draw dramatic error output to highlight critical issues during development
// 🧠 Important: log BEFORE formatting, since the formatter may hide details if showUser is false
drawLog(err);
}
const { status, body } = httpErrorFormatter(err); //Use the formatter as always
res.status(status).json(body);
}