Package Exports
- error-callsites
This package does not declare an exports field, so the exports above have been automatically detected and optimized by JSPM instead. If any package subpath is missing, it is recommended to post an issue to the original package (error-callsites) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
error-callsites
Yet another module for extracting callsites (a.k.a. stack-frames) from
Node.js Error
objects.
Installation
npm install error-callsites
Usage
var callsites = require('error-callsites')
var err = new Error('foo')
var frames = callsites(err)
console.log('Error occurred on line', frames[0].getLineNumber())
API
The module exposes a single function which expects an Error
object as
the first argument:
var frames = callsites(err)
More specifically, it expects an object on which Error.captureStackTrace(obj)
has been called, which is the case for Error
objects. You can do it directly
yourself:
var obj = {}
Error.captureStackTrace(obj)
var frames = callsites(err)
The function returns an array of
v8 CallSite
objects
-- one for each frame in the stack trace. CallSite objects provide accessor
methods for information on that frame. For example:
callsite.getThis()
- returns the value of thiscallsite.getTypeName()
- returns the type of this as a string. This is the name of the function stored in the constructor field of this, if available, otherwise the object's [[Class]] internal property.callsite.getFunction()
- returns the current functioncallsite.getFunctionName()
- returns the name of the current function, typically its name property. If a name property is not available an attempt will be made to try to infer a name from the function's context.callsite.getMethodName()
- returns the name of the property of this or one of its prototypes that holds the current functioncallsite.getFileName()
- if this function was defined in a script returns the name of the scriptcallsite.getLineNumber()
- if this function was defined in a script returns the current line numbercallsite.getColumnNumber()
- if this function was defined in a script returns the current column numbercallsite.getEvalOrigin()
- if this function was created using a call to eval returns a CallSite object representing the location where eval was calledcallsite.isToplevel()
- is this a toplevel invocation, that is, is this the global object?callsite.isEval()
- does this call take place in code defined by a call to eval?callsite.isNative()
- is this call in native V8 code?callsite.isConstructor()
- is this a constructor call?
See the link above for a complete list of the accessor methods. Some have been added in more recent versions of v8 and Node.js.
How it works
This package works by setting a custom Error.prepareStackTrace
property that transparently captures the structured stack trace that v8 passes
to this API, while also supporting other Node.js code in the process setting
its own Error.prepareStackTrace
.