Skip to content

Commit b61fb77

Browse files
authored
Mock server: catch errors in graphql execution (#2073)
1 parent 430e44b commit b61fb77

File tree

1 file changed

+16
-4
lines changed

1 file changed

+16
-4
lines changed

src/services/mock/graphql.cjs

Lines changed: 16 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -52,10 +52,10 @@ function getOperationName (query) {
5252
* @param {?Record<string, *>} variables - GraphQL query variables
5353
* @returns {*|Promise<*>} GraphQL response
5454
*/
55-
function getGraphQLQueryResponse (operationName, variables) {
55+
async function getGraphQLQueryResponse (operationName, variables) {
5656
const res = data[operationName] || {}
5757
if (typeof res === 'function') {
58-
return res(variables)
58+
return await res(variables)
5959
}
6060
return res
6161
}
@@ -67,12 +67,24 @@ function getGraphQLQueryResponse (operationName, variables) {
6767
* @param {*} request - Express HTTP GraphQL request
6868
* @returns {*|Promise<*>} GraphQL response
6969
*/
70-
function handleGraphQLRequest (request) {
70+
async function handleGraphQLRequest (request) {
7171
const isSchemaQuery = request.body.query.includes('__schema')
7272
const operationName = isSchemaQuery
7373
? 'IntrospectionQuery'
7474
: getOperationName(request.body.query)
75-
return getGraphQLQueryResponse(operationName, request.body.variables)
75+
try {
76+
return await getGraphQLQueryResponse(operationName, request.body.variables)
77+
} catch (err) {
78+
console.error(err)
79+
return {
80+
errors: [{
81+
message: err.message,
82+
extensions: {
83+
stacktrace: err.stack.split ? err.stack.split('\n') : err.stack,
84+
},
85+
}],
86+
}
87+
}
7688
}
7789

7890
module.exports = {

0 commit comments

Comments
 (0)