/axios-better-stacktrace

Axios plugin that provides better stack traces for axios errors

Primary LanguageTypeScriptMIT LicenseMIT

axios-better-stacktrace

Axios plugin that provides better stack traces for axios errors.

Check this axios issue for more details.

npm npm ci npm

Installation

NPM

npm install axios-better-stacktrace

Yarn

yarn add axios-better-stacktrace

Note

It was tested with axios 0.21.0.

Usage

// CommonJS
// const axiosBetterStacktrace = require('axios-better-stacktrace').default;

// ES6
import axiosBetterStacktrace from 'axios-better-stacktrace';

// use it before any other interceptors
axiosBetterStacktrace(axiosAgent);

// when using promises response error will get an enhanced stack trace automatically
axiosAgent.get('https://npmjs.com/<not-found>/').catch(enhancedError => console.error(enhancedError));

// or using async/await
(async () => {
  try {
    await axiosAgent.get('https://npmjs.com/<not-found>/');
  } catch (enhancedError) {
    console.error(enhancedError);
  }
})();

// or using a response interceptor and an error callback (e.g. could be useful with a logging middleware)
axiosAgent.interceptors.response.use(response => response, enhancedError => {
  console.error(enhancedError);

  return result;
});

// you can restore original agent behavior if needed
const restoreAgent = axiosBetterStacktrace(axiosAgent);

// some code here...

restoreAgent && restoreAgent();

See also demo.

Options

Name Type Default Description
errorMsg String Axios Better Stacktrace Error message to show next to the original one in the output.

Example

Default axios error without an axios-better-stacktrace plugin:

Error: Request failed with status code 404
    at createError (./node_modules/axios/lib/core/createError.js:16:15)
    at settle (./node_modules/axios/lib/core/settle.js:17:12)
    at IncomingMessage.handleStreamEnd (./node_modules/axios/lib/adapters/http.js:244:11)
    at IncomingMessage.emit (node:events:388:22)
    at IncomingMessage.EventEmitter.emit (node:domain:470:12)
    at endReadableNT (node:internal/streams/readable:1294:12)
    at processTicksAndRejections (node:internal/process/task_queues:80:21)

Enhanced axios error with an axios-better-stacktrace plugin (run yarn demo to see):

Error: Request failed with status code 404
    at createError (./node_modules/axios/lib/core/createError.js:16:15)
    at settle (./node_modules/axios/lib/core/settle.js:17:12)
    at IncomingMessage.handleStreamEnd (./node_modules/axios/lib/adapters/http.js:244:11)
    at IncomingMessage.emit (node:events:388:22)
    at IncomingMessage.EventEmitter.emit (node:domain:470:12)
    at endReadableNT (node:internal/streams/readable:1294:12)
    at processTicksAndRejections (node:internal/process/task_queues:80:21)
Error: Axios Better Stacktrace
    at Function.axiosBetterStacktraceMethodProxy [as get] (./src/axiosBetterStacktrace.ts:167:15)
    at getNpmPage (./demo/index.ts:10:35) <---- this is what usually useful to know for further debugging and this plugin adds 🙂
    at ./demo/index.ts:13:9
    at step (./demo/index.ts:33:23)
    at Object.next (./demo/index.ts:14:53)
    at ./demo/index.ts:8:71
    at new Promise (<anonymous>)
    at __awaiter (./demo/index.ts:4:12)
    at ./demo/index.ts:12:2
    at Object.<anonymous> (./demo/index.ts:16:3)