From 224a18dea8b59d008413ee79fe9c269b33059254 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?S=C3=A9bastien=20Chopin?= Date: Fri, 20 Jan 2017 18:11:30 +0100 Subject: [PATCH] Improve error handling in page components --- lib/app/client.js | 4 +++- lib/app/server.js | 3 ++- 2 files changed, 5 insertions(+), 2 deletions(-) diff --git a/lib/app/client.js b/lib/app/client.js index f4c88ff953..a5b72f8107 100644 --- a/lib/app/client.js +++ b/lib/app/client.js @@ -48,7 +48,8 @@ function loadAsyncComponents (to, ___, next) { Promise.all(resolveComponents) .then(() => next()) .catch((err) => { - this.error({ statusCode: 500, message: err.message }) + let statusCode = err.statusCode || err.status || (err.response && err.response.status) || 500 + this.error({ statusCode, message: err.message }) next(false) }) } @@ -148,6 +149,7 @@ function render (to, from, next) { }) .catch((error) => { _lastPaths = [] + error.statusCode = error.statusCode || error.status || (error.response && error.response.status) || 500 this.error(error) next(false) }) diff --git a/lib/app/server.js b/lib/app/server.js index 403176bc64..e8e184226f 100644 --- a/lib/app/server.js +++ b/lib/app/server.js @@ -130,7 +130,8 @@ export default context => { }) .catch(function (error) { if (error && (error instanceof Error || error.constructor.toString().indexOf('Error()') !== -1)) { - error = { statusCode: 500, message: error.message } + let statusCode = error.statusCode || error.status || (error.response && error.response.status) || 500 + error = { statusCode, message: error.message } } else if (typeof error === 'string') { error = { statusCode: 500, message: error }