#node.js #reactjs #react-native #axios
#node.js #reactjs #react-native #axios
Вопрос:
У меня есть серверная часть NodeJS, где я создал этот api
app.post("/addInvoice", (req, res) => {
let invoice = req.body;
var sql =
"INSERT INTO invoice (address, email, billnumber, price, status) VALUES(?, ?, ?, ?, 'sent');";
mysqlConnection.query(
sql,
[
invoice.address,
invoice.customeremail,
invoice.billnumber,
invoice.totalprice,
],
(err, rows, fields) => {
if (!err) {
res.send(rows);
} else {
res.send(err);
}
}
);
});
когда я вызываю этот API с помощью post man, он работает отлично.
но теперь мне нужно вызвать его по кнопке buttonclick из моего приложения react-native.
axios
.post("http://localhost:3000/addInvoice", {
address: address,
customeremail: email,
billnumber: invoicenumber,
totalprice: totalPrice,
})
.then((response) => {
alert(response);
});
Я ничего не происходит, когда я отправляю это, и оповещение (ответ) ничего не возвращает.
в чем может быть проблема?
Комментарии:
1. попробуйте это: then((response) => {console.log(response); }).catch((ошибка)=> console.log(«ошибка», ошибка), что будет зарегистрировано???
2. в журнале ошибка [Ошибка: ошибка сети] @ZahraMirali
3. Я думаю, что это как-то связано с приложением, запущенным на моем мобильном телефоне -> следует использовать другой URL?
Ответ №1:
Ваш эмулятор (или телефон) — это отдельное устройство, которое не работает на том же IP (localhost или 127.0.0.1), что и ваш веб-браузер, postman или ваш сервер.
Для того, чтобы отправить запрос на ваш сервер с вашего эмулятора (или телефона), вам необходимо получить доступ к вашему серверу через IP-адрес вашего компьютера: в Windows получите свой IP-адрес, запустив ipconfig в командной строке или, возможно, здесь: системные настройки> Сеть> Дополнительно> TCP / IP> IPv4-адрес.
Вместо http://localhost:port вы должны использовать http://your_ip_address:port
Комментарии:
1. да, точно, но я сканирую QR-код и тестирую приложение на своем мобильном телефоне
2. хорошо, это сработало, я вместо этого ввел свой IP-адрес. Большое спасибо, но у меня вопрос, если я хочу отправить проект кому-то другому, он должен изменить URL во всем коде? или есть решение?
3. если он ваш коллега, и вы хотите отправить ему как бэкэнд, так и интерфейс, он может изменить IP-адрес, но если вы хотите отправить свое приложение кому-то для его тестирования, нет, он не должен менять IP, решение: 1. ваш компьютер должен быть включен, когда он тестирует вашприложение (в противном случае ваше приложение не сможет вызвать Api) 2. разверните серверную часть NodeJS на сервере и замените «localhost» на адрес сервера
4. еще раз здравствуйте, извините, что беспокою вас, но не могли бы вы помочь мне с еще одной небольшой проблемой в react native?
5. конечно, если я смогу ответить 🙂