From 52d3e6399a59f867d1550f38ba96d2cfcbdd20dd Mon Sep 17 00:00:00 2001 From: tinymarsracing <37403227+tinymarsracing@users.noreply.github.com> Date: Wed, 24 Apr 2019 13:15:38 +0200 Subject: [PATCH 1/5] handler returns error message as json in order to enable all GraphQL clients to display the error message --- src/index.js | 9 +++++---- 1 file changed, 5 insertions(+), 4 deletions(-) diff --git a/src/index.js b/src/index.js index bb949a7..63841fb 100644 --- a/src/index.js +++ b/src/index.js @@ -44,15 +44,16 @@ const handler = (req, res) => { if (err) { // eslint-disable-next-line no-console console.error(err); - res.writeHead(err.status || err.statusCode || 500); - res.end(err.message); + res.setHeader('Content-Type', 'application/json'); + res.statusCode = err.status || err.statusCode || 500; + res.end(JSON.stringify({ error: err.message })); return; } if (!res.finished) { if (!res.headersSent) { - res.writeHead(404); + res.statusCode = 404; } - res.end(`'${req.url}' not found`); + res.end(JSON.stringify({ error: `'${req.url}' not found` })); } }); }; From 10dbf2fa7cda523a58efdd8fe05e457121b18e94 Mon Sep 17 00:00:00 2001 From: tinymarsracing <37403227+tinymarsracing@users.noreply.github.com> Date: Wed, 24 Apr 2019 14:12:05 +0200 Subject: [PATCH 2/5] Update index.js --- src/index.js | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 63841fb..43b590b 100644 --- a/src/index.js +++ b/src/index.js @@ -44,8 +44,8 @@ const handler = (req, res) => { if (err) { // eslint-disable-next-line no-console console.error(err); - res.setHeader('Content-Type', 'application/json'); res.statusCode = err.status || err.statusCode || 500; + res.setHeader('Content-Type', 'application/json'); res.end(JSON.stringify({ error: err.message })); return; } @@ -53,6 +53,7 @@ const handler = (req, res) => { if (!res.headersSent) { res.statusCode = 404; } + res.setHeader('Content-Type', 'application/json'); res.end(JSON.stringify({ error: `'${req.url}' not found` })); } }); From 4f9f09315c3ad21c8170f9e6dc1c7e0da05c32e1 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Wed, 24 Apr 2019 16:45:49 +0200 Subject: [PATCH 3/5] Update src/index.js Co-Authored-By: tinymarsracing <37403227+tinymarsracing@users.noreply.github.com> --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index 43b590b..f65c0f7 100644 --- a/src/index.js +++ b/src/index.js @@ -46,7 +46,7 @@ const handler = (req, res) => { console.error(err); res.statusCode = err.status || err.statusCode || 500; res.setHeader('Content-Type', 'application/json'); - res.end(JSON.stringify({ error: err.message })); + res.end(JSON.stringify({ errors: [{message: err.message}] })); return; } if (!res.finished) { From 4cd12bc44410a4a4b3923f8f19e21bcac6c4d305 Mon Sep 17 00:00:00 2001 From: tinymarsracing <37403227+tinymarsracing@users.noreply.github.com> Date: Wed, 24 Apr 2019 16:56:33 +0200 Subject: [PATCH 4/5] Update index.js --- src/index.js | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/src/index.js b/src/index.js index f65c0f7..f6715ac 100644 --- a/src/index.js +++ b/src/index.js @@ -45,7 +45,9 @@ const handler = (req, res) => { // eslint-disable-next-line no-console console.error(err); res.statusCode = err.status || err.statusCode || 500; - res.setHeader('Content-Type', 'application/json'); + if (!res.headersSent) { + res.setHeader('Content-Type', 'application/json'); + } res.end(JSON.stringify({ errors: [{message: err.message}] })); return; } @@ -53,8 +55,7 @@ const handler = (req, res) => { if (!res.headersSent) { res.statusCode = 404; } - res.setHeader('Content-Type', 'application/json'); - res.end(JSON.stringify({ error: `'${req.url}' not found` })); + res.end(`'${req.url}' not found`); } }); }; From 92d935686b7b01ad24203923d9d44e148b7405b0 Mon Sep 17 00:00:00 2001 From: Benjie Gillam Date: Wed, 24 Apr 2019 17:33:38 +0100 Subject: [PATCH 5/5] Minor tweak --- src/index.js | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/src/index.js b/src/index.js index f6715ac..3e047cd 100644 --- a/src/index.js +++ b/src/index.js @@ -44,8 +44,8 @@ const handler = (req, res) => { if (err) { // eslint-disable-next-line no-console console.error(err); - res.statusCode = err.status || err.statusCode || 500; if (!res.headersSent) { + res.statusCode = err.status || err.statusCode || 500; res.setHeader('Content-Type', 'application/json'); } res.end(JSON.stringify({ errors: [{message: err.message}] }));