Skip to content

Commit 36d6ee2

Browse files
authored
Merge pull request #3830 from rtibbles/sentry_client_errors
Better sentry client errors
2 parents 84ba18c + 9125832 commit 36d6ee2

File tree

1 file changed

+10
-39
lines changed
  • contentcuration/contentcuration/frontend/shared

1 file changed

+10
-39
lines changed

contentcuration/contentcuration/frontend/shared/client.js

Lines changed: 10 additions & 39 deletions
Original file line numberDiff line numberDiff line change
@@ -32,61 +32,32 @@ const client = axios.create({
3232
client.interceptors.response.use(
3333
response => response,
3434
error => {
35-
let message;
36-
let url;
37-
let config;
35+
const url = error.config.url;
36+
let message = error.message;
37+
let status = 0;
3838
if (error.response) {
39-
config = error.response.config;
40-
url = config.url;
39+
status = error.response.status;
4140
message = error.response.statusText;
4241
// Don't send a Sentry report for permissions errors
4342
// Many 404s are in fact also unauthorized requests so
4443
// we should silence those on the front end and try
4544
// to catch legitimate request issues in the backend.
4645
//
4746
// Allow 412 too as that's specific to out of storage checks
48-
if (
49-
error.response.status === 403 ||
50-
error.response.status === 404 ||
51-
error.response.status === 405 ||
52-
error.response.status === 412
53-
) {
47+
if (status === 403 || status === 404 || status === 405 || status === 412) {
5448
return Promise.reject(error);
5549
}
56-
57-
if (error.response.status === 0) {
58-
message = 'Network Error: ' + url;
59-
}
60-
61-
// Put the URL in the main message for timeouts
62-
// so we can see which timeouts are most frequent.
63-
if (error.response.status === 504) {
64-
message = 'Request Timed Out: ' + url;
65-
}
66-
} else if (error.request && error.request.config) {
67-
// Request was sent but no response received
68-
config = error.request.config;
69-
url = config.url;
70-
message = 'Network Error: ' + url;
71-
} else {
72-
message = error.message;
7350
}
7451

75-
const extraData = {
76-
url,
77-
type: config ? config.responseType : null,
78-
data: config ? config.data : null,
79-
status: error.response ? error.response.status : null,
80-
error: message,
81-
response: error.response ? error.response.data : null,
82-
};
52+
message = message ? `${message}: ${url}` : `Network Error: ${url}`;
53+
8354
if (process.env.NODE_ENV !== 'production') {
8455
// In dev build log warnings to console for developer use
8556
console.warn('AJAX Request Error: ' + message); // eslint-disable-line no-console
86-
console.warn('Error data: ' + JSON.stringify(extraData)); // eslint-disable-line no-console
57+
console.warn('Error data: ' + JSON.stringify(error)); // eslint-disable-line no-console
8758
} else {
88-
Sentry.captureMessage(message, {
89-
extra: extraData,
59+
Sentry.captureException(new Error(message), {
60+
contexts: { error },
9061
});
9162
}
9263
return Promise.reject(error);

0 commit comments

Comments
 (0)