Наконец, проблема была в конструкторе объекта Error, который делает бесполезным объект ответа, передаваемый ему в обработчике ошибок catch.
Я использую SDK с такимМетод: ссылка на код SDK
/**
* Axios request
* @param method Request method
* @param url Server URL
* @param requestConfig Custom Axios config
*/
async request(method, url, requestConfig) {
try {
const response = await this.axios.request(Object.assign({ method,
url }, requestConfig));
return response.data;
}
catch (error) {
if (error.response) {
throw new Error(error.response.data.message);
}
else {
throw error;
}
}
}
Я пытаюсь разобрать ошибки, испускаемые этим методом. У меня нет проблем со вторым случаем - throw error;
Но я не могу разобрать сообщение в первом случае - throw new Error(error.response.data.message);
Если я отлаживаю ошибку с console.log("Error: ", error);
, я получаю Error: Error: [object Object]
вconsole.
Если я отлаживаю console.log('sdk => error.response.data.message: ', error.response.data.message);
в приведенном выше коде перед выдачей ошибки, он показывает это:
sdk => error.response.data.message:
[{…}]
0:
messages: Array(1)
0: {id: "Auth.form.error.user.not-exist", message: "This email does not exist."}
length: 1
__proto__: Array(0)
__proto__: Object
length: 1
__proto__: Array(0)
Возможно, проблема в том, что Error ожидает строку в своем конструкторе и, следовательно,, он выполняет метод toString () для объекта.
Это ответ, который я получаю, когда смотрю на вкладку СЕТЬ в средстве проверки:
{"statusCode":400,"error":"Bad Request","message":[{"messages":[{"id":"Auth.form.error.user.not-exist","message":"This email does not exist."}]}]}
И я могу только вывести это: error.message[0]
Если я пытаюсь error.message[0].messages
, я получаю неопределенное значение.
Если я пытаюсь: const errorToJSON = JSON.parse(error)
Я получаю эту ошибку:
Unhandle Rejection (SyntaxError): Unexpected token E in JSON at position 0
Мне нужно текстовое значение сообщения: «Этого электронного письма не существует.»
Заранее благодарим.