From cf68d60a5d433a09298caefef891a47395da30ae Mon Sep 17 00:00:00 2001 From: Bertrand Marron Date: Sat, 7 May 2022 15:08:19 +0200 Subject: [PATCH] fix(error): make sure error.config is defined in the errorLogger (#110) MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Sometimes, axios throws an error without `error.config`, this makes sure we don’t destructure an undefined property. Related: https://github.com/axios/axios/pull/4665 Fix #94 Co-authored-by: Haegul Pyun --- src/logger/__test__/error.spec.js | 8 ++++++++ src/logger/error.ts | 3 +++ 2 files changed, 11 insertions(+) diff --git a/src/logger/__test__/error.spec.js b/src/logger/__test__/error.spec.js index 39ad9ef..3e4923f 100644 --- a/src/logger/__test__/error.spec.js +++ b/src/logger/__test__/error.spec.js @@ -28,6 +28,14 @@ test('response should be return immutable axiosError', () => { expect(mockLogger).toReturnWith(axiosError); }); +test('if erorr.config is undefined, return original error', () => { + const error = new Error('Unexpected error'); + + const mockLogger = jest.fn(errorLoggerWithoutPromise); + mockLogger(error); + expect(mockLogger).toReturnWith(error); +}); + test('if config is undefined, logger make default log', () => { const { config: { url, method }, diff --git a/src/logger/error.ts b/src/logger/error.ts index a4a03a3..9503dbc 100644 --- a/src/logger/error.ts +++ b/src/logger/error.ts @@ -4,6 +4,9 @@ import { assembleBuildConfig } from '../common/config'; import StringBuilder from '../common/string-builder'; function errorLoggerWithoutPromise(error: AxiosError, config: ErrorLogConfig = {}) { + if (!error.config) { + return error + } const {config: { method, baseURL, params, url }, response} = error;