Я пытаюсь преобразовать ответ из функции fetch в формат json , но при этом я получаю сообщение об ошибке Попытка вызвать метод интерфейса 'java.lang.string com.facebook.react.bridge.ReadableMap.getString (java.lang.String) 'для ссылки на пустой объект .
Вот мой фрагмент кода с функцией выборки:
export const fetchAllUsers = () => {
fetch('http://192.168.1.103:3000/api/userData')
.then(res => {
res.json();
//console.warn('res keys = ' + Object.keys(res))
})
}
Если закомментировать строку с помощью console.warn Я вижу следующие "res keys = type, status, ok, statusText, заголовки, url, _bodyInit, _bodyBlod, bodyUsed" .
bodyUsed = false
status = 200
type = default
Почему я не могу преобразовать ответ в формат json ?Или есть другой способ сделать это?
ОБНОВЛЕНИЕ
Я добавил второй then
, но я все еще получаю сообщение об ошибке и консоль .warn ('res is json') не работает:
export const fetchAllUsers = () => {
fetch('http://192.168.1.103:3000/api/userData')
.then(res => {
res.json();
//console.warn('res keys = ' + Object.keys(res));
})
.then(res => {
console.warn('res is json');
console.warn(res);
})
}
UPDATE_2
Я запустил функцию fetch
с другим URL, новсе еще есть проблема.Кажется, что .json()
вызывает ошибку.Когда я пытаюсь утешить результат выборки в первом .then()
, я получаю объект json с ключами типа , status и т. Д.
export const fetchAllUsers = () => {
fetch(`http://${localIP}:${port}/api/userData`)
//.then(res => res.json())
.then(json => console.warn('JSON: ' + json))
.catch(e => console.warn('ERROR: ' + e))
}
UPDATE_3
Забыл упомянуть, что я создаю приложение для Android с React Native.Для тестирования я использую физический смартфон.В версии Chrome 73.0.3683.
Я заменил свой запрос fetch
следующим:
fetch('https://jsonplaceholder.typicode.com/todos/1')
.then(response => response.json())
.then(json => console.log(json));
Но все равно получаю ту же ошибку.
Когда я запускаю его в https://jsfiddle.net/, он работает.Так что причина кроется в выполнении кода на смартфоне.