Package Exports
- error-drawings
Readme
Fun and clear error-messages
npm install error-drawingsGet a picture of what the script does:
npm run testECMAScript Modules
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
}
}Expected output:

Severity handling inside drawlog
- "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.
How to use severity with a CustomError type
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).
Using CustomError vs native Error
Since native JavaScript Error objects donβt have a severity property, there are two ways to use this library clearly:
1. For native Error objects (no severity):
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.
2. For CustomError objects (with severity)
Use the default export drawLog, which reads the severity property and routes to the correct drawing automatically:
import drawLog 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.
Types
The package exports the CustomError interface for strong typing:
import 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-errorBackendError is a lightweight utility for structured and user-aware error handling in Node.js backends. It helps distinguish operational errors from unexpected crashes, and supports standardized error responses across services.
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 } = await httpErrorFormatter(err); //Use the formatter as always
res.status(status).json(body);
}