API [Отклонение необработанного обещания: ошибка типа: сбой сетевого запроса]

#javascript #api

#javascript #API

Вопрос:

Я пытаюсь подключиться (Laravel API) к (React native app), я тестирую API в postman, и он работает на 100% нормально, но при загрузке в react native app я получаю следующую ошибку!

ошибка

     [Unhandled promise rejection: TypeError: Network request failed]
- node_moduleswhatwg-fetchdistfetch.umd.js:527:17 in setTimeout$argument_0
- node_modulesreact-nativeLibrariesCoreTimersJSTimers.js:135:14 in _callTimer
- node_modulesreact-nativeLibrariesCoreTimersJSTimers.js:387:16 in callTimers
- node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:425:19 in __callFunction
- node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:112:6 in __guard$argument_0
- node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:373:10 in __guard
- node_modulesreact-nativeLibrariesBatchedBridgeMessageQueue.js:111:4 in callFunctionReturnFlushedQueue
* [native code]:null in callFunctionReturnFlushedQueue
  

и в приложении это отображается следующим образом:
введите описание изображения здесь

там есть мой app.js код (только функция выборки ):

 myfun = async()=>{

await fetch('http://127.0.0.1:8000/api/login',{

    method:'POST',
    headers:{
        'Accept': 'application/json',
        'Content-Type': 'application/json'
    },
    body: JSON.stringify({"email":email, "password": passowrd})
}).then(res => res.json())
.then(resData =>{
    alert(resData);
    console.log(resData);
});
}
  

Комментарии:

1. http://http:// …?

2. отловите ошибку .. используйте try catch внутри async или myfun().catch()

3. Помимо опечатки, если ваше приложение react-native не запущено на том же компьютере, что и ваш API, вы не захотите его использовать 127.0.0.1 . Вам нужно будет подключиться к IP-адресу вашего сервера в любой сети, которую совместно используют два устройства

4. Проверьте URL еще раз, у него два http. Также проверьте, развернут ли вызываемый вами API на 127.0.0.1 (на вашем локальном компьютере)

5. Добавьте заголовок CORS в серверный API

Ответ №1:

Возможно, это немного запоздало, но чтобы помочь другим: при выборке вы должны добавить свой IPv4-адрес (обычно начинается с 192)

затем замените

 await fetch('http://127.0.0.1:8000/api/login'
  

с

 await fetch('http://192.xxx.x.xx:8000/api/login'
  

И в laravel запускает ваш порт с того же хоста (в вашем терминале):

 php artisan serve --host 192.xxx.x.xx --port="8000"
  

У меня это сработало 🙂

Комментарии:

1. После развертывания на сервере. Вернет ту же ошибку или нет?