diff --git a/src/Explorer/ContainerCopy/Actions/CopyJobActions.tsx b/src/Explorer/ContainerCopy/Actions/CopyJobActions.tsx index 359243d10..4922c43f3 100644 --- a/src/Explorer/ContainerCopy/Actions/CopyJobActions.tsx +++ b/src/Explorer/ContainerCopy/Actions/CopyJobActions.tsx @@ -115,7 +115,7 @@ export const getCopyJobs = async (): Promise => { }); return formattedJobs; } catch (error) { - const errorContent = JSON.stringify(error.content || error.message || error); + const errorContent = String(error.content || error.message || error); if (errorContent.includes("signal is aborted without reason")) { throw { message: "Previous copy job request was cancelled.", diff --git a/src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.tsx b/src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.tsx index 5077bc189..071f6c943 100644 --- a/src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.tsx +++ b/src/Explorer/Graph/GraphExplorerComponent/GraphExplorer.tsx @@ -1,6 +1,7 @@ /* eslint-disable @typescript-eslint/no-empty-function */ /* eslint-disable @typescript-eslint/no-explicit-any */ import { FeedOptions, ItemDefinition, QueryIterator, Resource } from "@azure/cosmos"; +import { stringifyError } from "Common/stringifyError"; import * as Q from "q"; import * as React from "react"; import LoadGraphIcon from "../../../../images/LoadGraph.png"; @@ -1092,8 +1093,8 @@ export class GraphExplorer extends React.Component void) { let errorDataStr = ""; if (errorData && errorData.length > 0) { - console.error(msg, errorData); - errorDataStr = ": " + JSON.stringify(errorData); + console.error(msg + String(errorData)); + errorDataStr = ": " + stringifyError(errorData); } const consoleMessage = `${msg}${errorDataStr}`; diff --git a/src/Explorer/Notebook/NotebookComponent/store.ts b/src/Explorer/Notebook/NotebookComponent/store.ts index 3a971debf..47fa91c02 100644 --- a/src/Explorer/Notebook/NotebookComponent/store.ts +++ b/src/Explorer/Notebook/NotebookComponent/store.ts @@ -1,6 +1,7 @@ import { AppState, epics as coreEpics, IContentProvider, reducers } from "@nteract/core"; import { configuration } from "@nteract/mythic-configuration"; import { makeConfigureStore } from "@nteract/myths"; +import { stringifyError } from "Common/stringifyError"; import { AnyAction, compose, Dispatch, Middleware, MiddlewareAPI, Store } from "redux"; import { Epic } from "redux-observable"; import { Observable } from "rxjs"; @@ -44,7 +45,7 @@ export default function configureStore( const traceFailure = (title: string, error: any) => { if (error instanceof Error) { - onTraceFailure(title, `${error.message} ${JSON.stringify(error.stack)}`); + onTraceFailure(title, `${error.message} ${stringifyError(error.stack)}`); console.error(error); } else { onTraceFailure(title, error.message); diff --git a/src/Explorer/Tables/DataTable/TableEntityListViewModel.ts b/src/Explorer/Tables/DataTable/TableEntityListViewModel.ts index 1c69e0efc..dc041ec91 100644 --- a/src/Explorer/Tables/DataTable/TableEntityListViewModel.ts +++ b/src/Explorer/Tables/DataTable/TableEntityListViewModel.ts @@ -1,3 +1,4 @@ +import { stringifyError } from "Common/stringifyError"; import * as DataTables from "datatables.net"; import * as ko from "knockout"; import Q from "q"; @@ -37,7 +38,7 @@ function parseError(err: any): ErrorDataModel[] { try { return _parse(err); } catch (e) { - return [{ message: JSON.stringify(err) }]; + return [{ message: stringifyError(err) }]; } }