React Native / Expo: Fetch выдает «Ошибка сетевого запроса» - PullRequest
0 голосов
/ 11 марта 2020

Я видел несколько сообщений на эту тему, но безрезультатно. У меня есть, с одной стороны, форма, которая собирает информацию (имя, имя и т. Д. c), а затем сохраняет ее в базе данных (mongodb). Все работает, когда я использую почтальон для отправки информации через маршрут / регистрацию, я вижу своего нового пользователя в mongodb. но когда я запускаю приложение в Экспо, он выдает мне «Сетевой запрос не удался».

Выборка внешнего интерфейса:

submitForm = () => {
  var signupData = JSON.stringify({
    first_name: this.state.firstName,
    last_name: this.state.lastName,
    email: this.state.email,
    password: this.state.password
  });

  fetch(`https://localhost:3000/signup`, {
    method: "POST",
    headers: { "Content-Type": "application/json" },
    body: signupData
  })
    .then(response => {
      console.log(response);
      return response.json();
    })
    .then(data => {
      if (data.result) {
        this.props.handleUserValid(
          this.state.firstName,
          this.state.lastName,
          this.state.email,
          data.user.token
        );
        this.props.navigation.navigate("Account");
      }
    })
    .catch(error => {
      console.error(error);
    });
};

И внутренний маршрут:

router.post("/signup", function(req, res, next) {
  var salt = uid2(32);

  console.log("Signup is running...");
  const newUser = new userModel({
    first_name: req.body.first_name,
    last_name: req.body.last_name,
    email: req.body.email,
    password: SHA256(req.body.password + salt).toString(encBase64),
    token: uid2(32),
    salt: salt
  });
  newUser.save(function(error, user) {
    console.log("LOG: user", user);
    res.json({ result: true, user });
  });
});

module.exports = router;

А вот снимок экрана с ошибкой

enter image description here

Опять же, при использовании Postman, выборка работает хорошо, выводится мой консольный журнал и пользователь добавляется в моя база данных. Спасибо за помощь.

- РЕДАКТИРОВАТЬ -

Я запустил приложение в веб-браузере через Expo, и все работает отлично. Мои страницы входа / регистрации и страница моей учетной записи. Но на моем телефоне он не работает (IOS), это проблема сети с моего телефона (может быть, проблема с сертификатом, неправильный IP-адрес?)

Если у вас есть идея, я заинтересован, я был застрял на нем 2 дня

Ответы [ 2 ]

0 голосов
/ 06 апреля 2020

Вместо «localhost» при использовании expo используйте IP-адрес вашего устройства (компьютера) (http://192.168.x.x: 3000 / «регистрация»). Этот метод работал для меня. Убедитесь, что ваш P C и мобильный телефон подключены к одной сети. Введите ipconfig/all в командной строке, чтобы найти IP-адрес.

Обновление:

Похоже, что это была моя проблема в сочетании с соседями по комнате, использующими пропускную способность Wi-Fi. Медленное соединение rnet также может быть проблемой. АТБ с вашей проблемой.

0 голосов
/ 11 марта 2020

Вы должны проверить URL

  • https://localhost:3000/signup (X)
  • http://localhost:3000/signup (O)

НЕ HTTPS

...