Package Exports
- @mnrendra/stack-trace
- @mnrendra/stack-trace/dist/index.js
- @mnrendra/stack-trace/dist/index.mjs
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 (@mnrendra/stack-trace) to support the "exports" field. If that is not possible, create a JSPM override to customize the exports field for this package.
Readme
@mnrendra/stack-trace
A utility that enables stack tracing of the NodeJs.CallSite
object, allowing dynamic tracing of invocations.
Install
npm i @mnrendra/stack-trace
Usage
Using CommonJS
:
const { stackTrace } = require('@mnrendra/stack-trace')
const [trace] = stackTrace()
console.log(trace.getFileName() === __filename) // Output: true
Using ES Module
:
import { stackTrace } from '@mnrendra/stack-trace'
import { fileURLToPath } from 'node:url'
const [trace] = stackTrace()
console.log(new URL(trace.getFileName()).pathname === fileURLToPath(import.meta.url)) // Output: true
Examples
- Call from your development project
/foo/project-name/src/index.mjs
:
import { stackTrace } from '@mnrendra/stack-trace'
const [trace] = stackTrace()
console.log(trace.getFileName()) // Output: file:///foo/project-name/src/index.mjs
- Call from your production module
/foo/project-name/node_modules/module-name/dist/index.js
:
"use strict";
const { stackTrace } = require('@mnrendra/stack-trace');
const [trace] = stackTrace();
console.log(trace.getFileName()); // Output: /foo/project-name/node_modules/module-name/dist/index.js
Note: When calling getFileName
from an ESM module, it will return the file name as a URL instead of a file path.
Options
import { stackTrace } from '@mnrendra/stack-trace'
stackTrace(
// The first argument is the target function, or `null`, or `undefined`:
null,
// The second argument is the options object:
{
limit: 10 // The `Error.stackTraceLimit` property specifies the number of stack frames to be collected by a stack trace.
}
)
Types
import type {
CallSite, // NodeJS.CallSite
StackTrace, // (targetFunction?: TargetFunction, options?: Options) => CallSite[]
TargetFunction, // (...args: any[]) => any | Promise<TargetFunction>
Options // { limit?: number }
} from '@mnrendra/stack-trace'