Skip to content

Commit 0f9eb0c

Browse files
Merge pull request #192 from NicoWeio/better-errors
Display error message from API requests if available, deduplicate messages
2 parents 353634b + 3b1a22f commit 0f9eb0c

1 file changed

Lines changed: 19 additions & 8 deletions

File tree

src/components/ErrorBoundary.vue

Lines changed: 19 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,33 @@
11
<template lang="pug">
22
div
3-
b-alert(variant="danger", v-for="error in errors", :key='error.time', :show='!error.dismissed', dismissible, @dismissed="error.dismissed = false")
4-
| {{ error.msg }}.
5-
| See dev console (F12) and/or server logs for more info.
6-
slot
3+
b-alert(variant="danger", v-for="error in errors", :key='error.time', :show='!error.dismissed', dismissible, @dismissed="error.dismissed = false")
4+
| {{ error.msg }}
5+
slot
76
</template>
87

98
<script>
109
// Based on: https://medium.com/@dillonchanis/handling-errors-in-vue-with-error-boundaries-91f6ead0093b
1110
export default {
1211
name: 'ErrorBoundary',
1312
data() {
14-
return { errors: [] };
13+
return {
14+
errors: []
15+
};
1516
},
1617
errorCaptured(err, vm, info) {
17-
//console.error("Error captured!");
18-
//console.error(err, vm, info);
19-
const msg = err.name && err.message ? err.name + ': ' + err.message : err;
18+
// console.error("Error captured!");
19+
// console.error(err, vm, info);
20+
21+
// fallback
22+
let msg = err;
23+
// use server error response if available; err.isAxiosError doesn't help much here…
24+
if (err.response && err.response.data && err.response.data.message) {
25+
msg = err.response.data.message;
26+
} else if (err.name && err.message) {
27+
msg = `${err.name}: ${err.message}.
28+
See dev console (F12) and/or server logs for more info.`;
29+
}
30+
2031
this.errors.push({
2132
msg: msg,
2233
time: new Date().toISOString(),

0 commit comments

Comments
 (0)