Итак, у меня есть этот метод, который я использую для вызова универсального метода выборки, который я определил в отдельном файле js:
export function detailedView(request,token)
{
let endpoint = 'api/v1/cbn/inventory/GetDetailRequest?RequestNo='+request['RequestNo'];
let header = {
"Content-Type": "application/x-www-form-urlencoded",
"Authorization": "Bearer "+ token
}
return dispatch => {
return fetchAPI(endpoint,'POST', header, null)
.then((json) => {
dispatch(receiveDetails());
})
.catch((error) => { //PROBLEM IS HERE
console.log("error message: " + error);
dispatch(receiveEmptyDetails());
});
}
}
отмеченное место в этом коде всегда вызывается по какой-то причине, хотя функция fecth ниже всегда заканчивается в месте, отмеченном ниже:
export function fetchAPI(endpoint, method, header, data) {
let url = 'http://10.64.2.149:8082/' + endpoint;
let options = {
method: method,
headers: header,
body: stringify(data)
};
return fetch(url, options)
.then(response => {
return response.json()
.then((json) => {
console.log(json, response) //AT THIS POINT RESPONSE STATUS IS 200, SHOWN IN THE SCREENCAP BELOW
if (response.status === 200 || response.status === 201) {
return json;
} else if (response.status === 408) {
throw('Request Timeout');
}
else if (response.status === 400){
throw ('Bad request');
}
else {
if (json.errors) {
throw(json.errors);
} else {
throw('unknown error');
}
}
})
})
.catch(error => {
if (typeof error.message !== 'undefined') {
throw(error.message);
} else if (typeof error === 'string') {
throw(error);
} else if (Object.keys(error)) {
let errStr = '';
let errors = _.omit(error, ['column', 'line', 'sourceURL'])
_.forEach(errors, function (value) {
errStr += value + '.\n';
});
throw (errStr);
} else {
throw('unknown error');
}
});
}
module.exports = { fetchAPI };

У меня есть другой метод, который делает то же самое, что и этот (только с другой конечной точкой, но все остальное - копирование и вставка), который использует ту же функцию извлечения, описанную выше, и проблема никогда не возникала.
Но, как вы можете видеть из печатного журнала консоли (последняя строка), по какой-то причине этот бит всегда разрешается в catch
вместо then
, называя его reference error
, как если бы запрос не был успешным.
Кто-нибудь знает, что здесь происходит?