There are several possibilities:
Try-catch
try { errorMessage = error.responseJSON.error.message; } catch(e) { }
Failed to complete:
Object.defineProperty(error, 'responseJSON', { get: function() { throw new Error('This will not be shown') });
&&
errorMessage = error && error.responseJSON && error.responseJSON.error && error.responseJSON.error.message;
Failed to complete:
error.responseJSON = 0; // errorMessage === 0 instead of undefined
function
function getDeepProperty(obj,propstr) { var prop = propstr.split('.'); for (var i=0; i<prop.length; i++) { if (typeof obj === 'object') obj = obj[prop[i]]; } return obj; } errorMessage = getDeepProperty(error, 'responseJSON.error.message');
Failed to complete:
alternative function - see comment from @Olical
function getDeepProperty(obj) { for (var i=1; i<arguments.length; i++) { if (typeof obj === 'object') obj = obj[arguments[i]]; } return obj; } errorMessage = getDeepProperty(error, 'responseJSON', 'error', 'message');
Tibos
source share