I am trying to make an API request by Axios but am getting this error.
Error: Network Error
at e.exports (createError.js:16)
at XMLHttpRequest.g.onerror (xhr.js:117)
Here is the code:
async function getData() {
await axios
.get(
"api.openweathermap.org/data/2.5/weather?q={city name}&appid={api key}"
)
.then(function (data) {
console.log(data);
})
.catch(function (err) {
console.log(err);
});
}
How can I solve this?
Thanks
asked Jan 2, 2022 at 0:26
2
Try mentioning the right protocol.
"https://api.openweathermap.org/..."
Make sure you’re using the right URI path. Also check your connectivity. The values of err
might be worth examining as well.
answered Jan 2, 2022 at 0:36
konsoleboxkonsolebox
70.1k12 gold badges98 silver badges105 bronze badges
1
Я пытаюсь отправить запрос API через Axios, но получаю эту ошибку.
Error: Network Error
at e.exports (createError.js:16)
at XMLHttpRequest.g.onerror (xhr.js:117)
Вот код:
async function getData() {
await axios
.get(
"api.openweathermap.org/data/2.5/weather?q={city name}&appid={api key}"
)
.then(function (data) {
console.log(data);
})
.catch(function (err) {
console.log(err);
});
}
Как я могу это решить?
Благодарность
1 ответ
Лучший ответ
Попробуйте указать правильный протокол.
"https://api.openweathermap.org/..."
Убедитесь, что вы используете правильный путь URI. Также проверьте подключение. Также стоит изучить значения err
.
1
konsolebox
2 Янв 2022 в 03:36
I’m using Ionic/Vue and simple axios post request to my server. It works well until I run it on android emulator using capacitor ionic capacitor copy android. But when I tried to login to the android emulator it gives me this error. Please help
2019-07-14 18:48:06.318 9746-9896/io.ionic.starter I/Capacitor/Plugin/Console: {«message»:»Network Error»,»name»:»Error»,»stack»:»Error: Network Errorn at t.exports (http://localhost/js/chunk-vendors.6faaceee.js:7:66512)n at XMLHttpRequest.l.onerror (http://localhost/js/chunk-vendors.6faaceee.js:43:11967)»,»config»:{«url»:»http://192.168.1.7:3333/api/auth/login»,»method»:»post»,»data»:»{«username»:»»,»password»:»»}»,»headers»:{«0″:»application/json»,»Content-Type»:»application/json;charset=utf-8″,»Access-Control-Allow-Origin»:»*»,»Access-Control-Allow-Headers»:»Origin, X-Requested-With, Content-Type, Accept»},»proxy»:{«host»:»http://192.168.1.7″,»port»:»3333″},»baseURL»:»http://192.168.1.7:3333/»,»transformRequest»:[null],»transformResponse»:[null],»timeout»:0,»xsrfCookieName»:»XSRF-TOKEN»,»xsrfHeaderName»:»X-XSRF-TOKEN»,»maxContentLength»:-1}}
Я пытаюсь развернуть приложение на AWS ECS. Серверная часть приложения — это микросервис, а клиентская сторона — это приложение для реагирования с рендерингом на стороне сервера.
Бэкэнд развернут в частной подсети в ECS с внутренним балансировщиком нагрузки. То же самое со стороной клиента, развернутой в той же частной подсети, но в другом кластере ECS (с отдельными экземплярами ECS). Кроме того, клиентская сторона подключена к балансировщику нагрузки приложений с выходом в Интернет.
На следующей диаграмме изображена описанная мною архитектура AWS.
Проблема
Всякий раз, когда GET, POST или любой другой HTTP-запрос, сделанный приложением React, не достигает серверной части. Но все это отлично работает, когда я запускаю приложение локально.
Когда я подключаюсь по SSH к экземпляру ECS на стороне клиента и выполняю вызов GET или POST с использованием CURL с DNS-именем внутреннего внутреннего балансировщика нагрузки, он работает отлично и выполняет соответствующий HTTP-запрос к серверу. Я также попробовал то же самое по SSH в контейнере докеров на стороне клиента, и все работает без проблем.
Ниже приведен пример действия, которое вызывает внутренний вызов.
export function getData() {
return {
type: "GET_DATA",
payload: new Promise((resolve, reject) => {
app.auth().onAuthStateChanged((id) => {
if (id) {
axios.get(process.env.BACKEND_HOST+`/service1/${id}`)
.then((response) => {
if (response.data == "") {
reject(false);
}
resolve(response.data)
}).catch((error) => { console.info(error) })
} else {
reject(false);
}
})
})
}
}
Ниже приведен вывод ошибки, который я получаю при выполнении вышеуказанного вызова.
OPTIONS http://internal-cc-backend-lb-238318069.us-east-1.elb.amazonaws.com/service1/data net::ERR_CONNECTION_TIMED_OUT
Error: Network Error
at e.exports (bundle.js:30)
at XMLHttpRequest.f.onerror (bundle.js:30)
OPTIONS http://internal-cc-backend-lb-238318069.us-east-1.elb.amazonaws.com/service1 net::ERR_CONNECTION_TIMED_OUT
Error: Network Error
at e.exports (bundle.js:30)
at XMLHttpRequest.f.onerror (bundle.js:30)
GET http://internal-cc-backend-lb-238318069.us-east-1.elb.amazonaws.com/service1/XfSOjVUFCcSoNEsFljOPfP11XyG2 net::ERR_CONNECTION_TIMED_OUT
Error: Network Error
at e.exports (bundle.js:30)
at XMLHttpRequest.f.onerror (bundle.js:30)
Я передаю DNS-имя внутреннего балансировщика нагрузки в качестве переменной среды. Протестировано с помощью console.info, чтобы убедиться, что код получает правильное DNS-имя, и это так. При локальном запуске я передаю имя хоста / порт каждой службы отдельно.
Я был бы очень признателен за любые отзывы и идеи по этому поводу, и если вам, ребята, понадобится дополнительная информация, дайте мне знать, я обновлю этот вопрос.
Заранее спасибо!