Package Exports
- @visulima/error
- @visulima/error/code-frame
- @visulima/error/error
- @visulima/error/package.json
- @visulima/error/sourcemap
- @visulima/error/stacktrace
Readme
Visulima error
Error with more than just a message, stacktrace parsing and sourcemap loading.
Daniel Bannert's open source work is supported by the community on GitHub Sponsors
Install
npm install @visulima/erroryarn add @visulima/errorpnpm add @visulima/errorUsage
Extend the VisulimaError
import { VisulimaError } from "@visulima/error";
class MyError extends VisulimaError {
constructor(message: string) {
super({
name: "MyError",
message,
});
}
}
throw new MyError("My error message");
// or
const error = new MyError("My error message");
error.hint = "My error hint";
throw error;Get all causes in a error
import { getErrorCauses } from "@visulima/error";
const error = new Error("My error message");
const error2 = new Error("Nested Error");
error.cause = error2;
// The getErrorCauses function will return an array of all causes in the error in the order they occurred.
const causes = getErrorCauses(error);
console.log(causes);
// [
// {
// message: "My error message",
// name: "Error",
// stack: "Error: My error message\n at Object.<anonymous> (/visulima/packages/error/src/index.ts:2:16)",
// },
// {
// message: "Nested Error",
// name: "Error",
// stack: "Error: Nested Error\n at Object.<anonymous> (/visulima/packages/error/src/index.ts:3:16)",
// },
// ];Pretty Code Frame
import { codeFrame } from "@visulima/error";
const source = "const x = 10;\nconst error = x.y;\n";
const loc = { column: 16, line: 2 };
const frame = codeFrame(source, { start: loc });
console.log(frame);
// 1 | const x = 10;
// > 2 | const error = x.y;
// | ^Stacktrace
Browser older than 6 years are not supported.
Currently supported browsers/platforms:
- Firefox
- Chrome
- Webkit / Safari
- Edge
- Node / Node V8
- Opera (Chromium based)
import { parseStack } from "@visulima/error";
const error = new Error("My error message");
const stack = parseStack(error);
console.log(stack);
// [
// {
// column: 16,
// file: "file:///Users/danielbannert/Projects/visulima/packages/error/src/index.ts",
// line: 2,
// methodName: "Object.<anonymous>",
// raw: " at Object.<anonymous> (/visulima/packages/error/src/index.ts:2:16)",
// type: undefined, // optional property, can be undefined, "eval", "native", or "internal"
// evalOrigin: undefined, // optional property only available if the stacktrace contains eval
// },
// ...and so on
// ];Source Map
import { loadSourceMap, originalPositionFor, sourceContentFor } from "@visulima/error";
const sourceMap = loadSourceMap("your_path/src/index.js"); // returns a TraceMap
const traced = originalPositionFor(sourceMap, { column: 13, line: 30 });
console.log(traced);
// {
// column: 9,
// line: 15,
// name: "setState",
// source: "your_path/src/index.js"
// }
console.log(sourceContentFor(sourceMap, traced.source)); // 'content for your_path/src/index.js'For more information about the TraceMap see @jridgewell/trace-mapping
Supported Node.js Versions
Libraries in this ecosystem make the best effort to track Node.js’ release schedule. Here’s a post on why we think this is important.
Contributing
If you would like to help take a look at the list of issues and check our Contributing guild.
Note: please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.
Credits
About
Related Projects
- baseerr: merge another error with additional properties.
- callsite-record: create a fancy log entries for errors and function call sites.
- callsites: get callsites from the V8 stack trace API.
- explain-error: wrap an error with additional explanation.
- error-wrapper: merges the stack of another error to its own.
- errwischt/stacktrace-parser
- trace: create super long stack traces.
- clarify: remove node related stack trace noise.
- piotr-szewczyk/stacktrace-parser-node
- pretty-error: make the call stacks clear.
- ono: allow different types of error to be thrown.
- ololog: another logger with a similar motivation but only support console.log as its sole transport.
- stacktracejs/error-stack-parser
- marvinhagemeister/errorstacks Tiny library to parse error stack traces
- getsentry/sentry-javascript
License
The visulima error is open-sourced software licensed under the MIT